русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Задачи и упражнения

1. Составить и проверить функцию, которая в текстовом режиме с помощью символов псевдографики рисует границу прямоугольника, не заполняя его внутреннюю область.

void ramka (int x0, int y0, int, int);

int main ()

{ ramka (2,5, 10, 30); getch(); return 0;

}

void ramka (int x0, int y0, int n1, int n2)

{ int x,y,i; x=x0; y=y0;

gotoxy(x,y++); printf("%c",218); // символ левого верхнего угла

for (i=0;i<n1-2;i++)

{ gotoxy(x,y++); printf("%c", 179); // для вертикальной линии

}

gotoxy(x++,y); printf("%c",192); // левый нижний угол

for (i=0;i<n2-2;i++)

{ gotoxy(x++,y); printf("%c",196); // для горизонтальной линии

}

gotoxy(x,y--); printf("%c",217); // правый нижний угол

for(i=0;i<n1-2;i++)

{ gotoxy(x,y--); printf("%c",179);

}

gotoxy(x--,y); printf("%c",191); // правый верхний угол

for(i=0;i<n2-2;i++)

{ gotoxy(x--,y); printf("%c",196);

}

}

Коды всех символов, в том числе и символов псевдографики, можно вывести с помощью следующей программы:

main()

{ clrscr(); textcolor(2);

for (int i=1; i<256; i++)

{ cprintf("%4d",i); printf("%c%c" , i, i%12?' ':'\n');

}

getch(); return 0;

}

Здесь по формату "%4d” выводим код символа указанным в textcolor вторым цветом, а по формату "%c” выводим символ с этим кодом цветом по умолчанию. При этом если i кратно 12, то выполняется переход на следующую строку экрана.

2. Составить функцию для нахождения действительных корней квадратного уравнения a∙x2 + b∙x + c =0. Используя ее, составить и проверить функцию решения биквадратного уравнения a∙z4 + b∙z2 + c =0.

3. Составить и проверить функцию решения линейного уравнения вида a∙x=b.

4. Вывести n параллельных горизонтальных линий разными цветами. Составить и использовать функцию для рисования одной горизонтальной линии.

5. Вывести n параллельных вертикальных линий разными цветами. Составить и использовать функцию для рисования одной вертикальной линии.

6. В текстовом режиме заполнить все окно вывода следующими фигурами, не заполняя их внутри:

a) ромбами;

б) равнобедренными треугольниками;

в) прямоугольными треугольниками с прямым углом внизу слева;

г) прямоугольными треугольниками с прямым углом внизу справа.

Составить и использовать функцию для рисования границы одной фигуры в зависимости от варианта.

7. В текстовом режиме нарисовать последовательность заполненных внутри прямоугольников, разместив их одним из следующих способов:

а) по диагонали окна, начиная с левого верхнего угла;

б) по диагонали окна, начиная с левого нижнего угла;

в) в шахматном порядке.

§ 3. Функции с одним результатом. Оператор return

Пример. Ввести последовательность целых чисел, пока не введём 0 (нуль). Для каждого из них найти и вывести сумму составляющих это число десятичных цифр.

При решении подобных задач с использованием функций необходимо ответить на следующие вопросы:

1) Какие функции, для каких целей будем составлять? Может быть несколько вариантов ответа на такой вопрос. Для определённости составим функцию для вычисления суммы десятичных цифр одного числа с именем SUMDIG. Эта функция будет вызываться в цикле несколько раз для каждого введённого числа.

2) Определяем входные и выходные параметры функции, то есть что для неё дано и что функция получает. У нас дано одно (!) целое число, а не массив, и получаем сумму его цифр, то есть тоже одно (!) целое число.

3) Составляем алгоритм функции SUMDIG и записываем его на языке C++. Для вычисления суммы цифр выделяем их в обратном порядке справа налево, используя получение остатка от деления на 10 (операция %) и целочисленное деление на 10 (операция /). Так как размерность числа может быть любой, то получается цикл с неизвестным количеством повторений. Получение цифр продолжаем, пока не получим при целочисленном делении нуль.

4) В головной функции в цикле вводим целое число, вызываем SUMDIG и выводим результат.

int SUMDIG(int );

int main()

{ int X=1; cout<< "For exit -- 0\n\n";

while (X)

{ cin>>X;

gotoxy(30, wherey()-1);

cout<<SUMDIG(X)<<endl;

}

return 0; }

int SUMDIG (int num)

{ int s=0, dig;

while (num)

{ dig=num%10;

s+=dig;

num/=10;

} return s;

}

В прототипе функции, возвращающей единственный результат, записываем его тип вместо void, имя функции и в скобках только входные параметры с их типами по тем же правилам, что и раньше. В скобках единственный выходной параметр не записывается. Аналогично записываем заголовок функции при её описании.

В тексте такой функции должен быть оператор вида

return выражение;

где выражение должно быть того же или совместимого типа, что и в заголовке функции.Оператор осуществляет выход из функции, передаёт управление в вызвавшую её функцию (в нашем примере в головную, но не обязательно) и возвращает в неё значение указанного выражения.

Особенности return:

· как частный случай выражения, можно возвращать константу или значение одной переменной;

· оператор может быть единственным в функции:

float MyFun1 (float x, float y)

{return x+y;

}

· наоборот, таких операторов может быть несколько и он не обязательно должен быть в конце функции. Но выполняется всегда один из них. Например, следующий вариант

float MyFun2A (float x, float y)

{ if (x>y) return x+y;

else return x*y;

}

короче, чем

float MyFun2B (float x, float y)

{ float r;

if (x>y) r= x+y;

else r= x*y;

return r;

}

Это же можно реализовать ещё компактнее с помощью тернарной операции:

float MyFun2 (float x, float y)

{ return x>y ? x+y : x*y;

}

· Оператор return обязателен, если возвращается одно значение, то есть в заголовке тип результата отличен от void.

Вызов такой функции с единственным возвращаемым значением записывается непосредственно в выражении, где используется её результат. Вызывать функцию, в том числе и типа void, можно не только из головной функции, но и из любой другой. Кроме “команды вывода”, обращение функции с одним результатом можно записать

· в операции присваивания, например sd=SUMDIG(1234);

· непосредственно в операторе if, не присваивая предварительно значение функции переменной (if (SUMDIG(a)>10)…), где a — переменная целого типа;

· в операторе while, например, while (SUMDIG(a*a)!=num)

или while (SUMDIG(a*a)-num)… и других операторах;

· при вызове другой функции в качестве фактического параметра, например, LINE2 (SUMDIG(a), 5, ‘.’); (см. 1.1, пример 2).

Оператор return имеет также и другое назначение. Он прекращает работу любой функции, в том числе и типа void. То есть он не обязательно должен иметь возвращаемое значение. Тогда return просто осуществляет выход из функции, не возвращая никакого значения. В таком виде, то есть в функции типа void, оператор return не обязателен. Если он не записан, то работа функции заканчивается после выполнения последнего оператора при достижении закрывающей скобки. В функции типа void оператор return имеет смысл использовать, если надо выйти из функции в разных её ветвях в зависимости от некоторого условия.

Просмотров: 582


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.