В программе использовать два способа передачи параметров в функцию: по значению и по адресу.




Лабораторная работа № 9

Использование функций и шаблонов функций

 

В общем случае функция имеет следующий формат:

тип возвращаемого значения Имя_Функции(параметры) {

// Здесь следует тело функции,

// состоящее из операторов }

Если функция ничего не возвращает, то тип возвращаемого значения – void. Параметры функции следует задавать через запятую в виде (тип1 имя1, тип2 имя2, …)

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

return возвращаемое значение;

 

Пример функции, которая вычисляет сумму 4х чисел разных типов

double Sum4(char x1, int x2, float x3, double x4)

{

double s;

s = x1+x2+x3+x4;

return s;

}

или

double Sum4(char x1, int x2, float x3, double x4)

{

return x1+x2+x3+x4;

}

Вызывать функцию надо по ее имени, в скобках указав параметры.

Пример вызова:

rez = Sum4(12, X, f*g, 12.5);

Пример использования функции

Вычислить , где при а=3, b=2, s=6.7, g=2.3, вычислите при помощи функции.

#include <iostream.h>

#include <math.h>

//Описание (Прототип) функции

float Rezult(float x, float y, int c);

int main() {

int a,b,n;

float s,g,f;

a=3;

b=2;

s=7.7;

g=2.3;

f=a*Rezult(s,g,b); // Вызов функции

cout <<" f= "<<f;

cout <<" enter 1";

cin >>n;

return 0; }

float Rezult(float x, float y, int c) { // Задание функции

float P;

P=x*x-y*c;

return P; }

 

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

Пример: Программа нахождения модуля числа: (аргументом функции является само число n)

 

Индивидуальные задания:

Часть 1

Написать программу, функция main которой включает вызов 3х функций:

- 1-я функция осуществляет ввод исходных данных;

- 2-я функция осуществляет расчет результатов;

- 3-я функция выводит результаты расчета на экран.

В программе использовать два способа передачи параметров в функцию: по значению и по адресу.

 

1. Составьте программу – расчет прибыли. Коммерсант, имея стартовый капитал r рублей, занялся торговлей, которая ежемесячно увеличивает капитал на р%. Через сколько лет он накопит сумму s достаточную для покупки собственного магазина? (Значение всех переменных вводятся с клавиатуры.)

2. Найти периметр и площадь параллелограмма.

3. Найти радиус шара по его объему.

4. На биржевых торгах за 1 фунт стерлингов давали $1,487 долларов, за франк- $0,172, долларов, за немецкую марку - $0,584 долларов, а за японскую Йену - $0,00955 долларов. Напишите программу, которая запрашивает денежную сумму в долларах, а затем выводит эквивалентные суммы в других валютах.

5. Температуру, измеряемую в градусах по Цельсию, можно перевести в градусы по Фаренгейту путем умножения на 9/5 и сложения с числом 32. Напишите программу, которая запрашивает температуру, измеряемую в градусах по Цельсию и отображающую ее эквивалент по Фаренгейту.

6. Вычислить значение функции. Все значения переменных вводятся с клавиатуры.

7. Две дроби a/b и c/d можно сложить следующим образом:

a/b + c/d = (a*d + b*c) / (b*d)

Например: 1/4 + 2/3 = (1*3 + 4*2) / (4*3) = 11/12

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

Введите 1 дробь: 1/2

Ведите 2 дробь: 2/5

Сумма = 9/10

Вы можете использовать тот факт, что операция извлечения >> может считывать более одного значения за раз: cin >> c >> znak >> d; (где «c» и «d» переменные числового типа, а «znak» переменная символьного типа)

8. Составьте программу – для вывода соответствующей буквы, которая запрашивала у пользователя слово, (состоящее минимум из 5 букв) и число от 1 до 5 и выводила бы на экран соответствующую цифре букву из слова.

9. Найти приблизительный вес человека, который едет в лифте вверх и вес человека, который едет в лифте вниз. Ускорение лифта a=0,7 м/с; Масса тела человека должна вводиться с клавиатуры, g=9,8м/с2. (Вес тела человека едущего в лифте вниз =m*(g-a), вес тела человека едущего в лифте вверх =m*(g+a))

10. Составьте программу – оплата в такси. В такси одновременно сели три пассажира. Когда вышел первый пассажир, на счетчике было р1 рублей, когда вышел второй – р2 рублей. Сколько должен заплатить каждый пассажир, если по окончанию поездки счетчик показал р3 рублей? Плата за посадку составляет р0 рублей. (Значения р1, р2, р3 вводятся с клавиатуры)

Комментарии: общая сумма оплаты пассажирами должна совпадать с показаниями счетчика по окончании поездки. Рассмотрим крайние ситуации. По справедливости если все три пассажира вышли одновременно, они должны заплатить по (р03)/3 руб. Если же первый и второй пассажиры «передумали ехать», они платят по р0/3руб., а оставшаяся сумма ложиться на счет третьего пассажира.

11. Составьте программу –временной интервал. Заданы моменты начала и конца некоторого промежутка времени в часах и минутах (в пределах одних суток). Найти продолжительность этого промежутка в тех же единицах измерения.

12. Составьте программу – формирование цены на молоко. Животновод в начале каждой зимы цену на молоко на р%, а каждым летом снижает на столько же процентов. Измениться ли цена на молоко и если да, то в какую сторону и на сколько через n лет. (Все значения должны вводиться с клавиатуры.)

 

Часть 2

Напишите программу, осуществляющую ввод элементов массива, и содержащую шаблон функции, возвращающей (по вариантам):

1. Значение первого элемента массива, наиболее близкого по значению к среднему арифметическому элементов массива.

2. Номер последнего из минимальных элементов массива.

3. Количество максимальных элементов массива.

4. Средний элемент массива, если количество элементов нечетно, либо максимальных элемент массива.

5. Номер первого элемента массива, значение которого равно сумме его соседних элементов.

6. Среднее арифметическое всех элементов массива.

7. Номер последнего элемента массива, значение которого равно произведению его соседних элементов.

8. Произведение отрицательных элементов массива.

9. Количество отрицательных элементов массива.

Аргументами функции должны быть имя и размер массива (типа int).

В функции main() проверьте работу функции с типами int, long, double, char(!?).

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: