Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratornaya_rabota_1.doc
Скачиваний:
15
Добавлен:
11.11.2019
Размер:
66.05 Кб
Скачать

5 Примеры программ

1. Перегрузить функцию, возвращающую максимальное из значений элементов одномерного массива, передаваемого ей в качестве параметра. Массивов могут быть типов: int, long, float, double.

#include <iostream.h>

//функция для массивов с элементами типа int

long max_elem(int n,int array[])

{

int value=array[0];

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

value=value>array[i]?value:array[i];

cout<<"\nДля (int) : ";

return long(value);

}

//функция для массивов с элементами типа long

long max_elem(int n,long array[])

{

long value=array[0];

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

value=value>array[i]?value:array[i];

cout<<"\nДля (long) : ";

return value;

}

//функция для массивов с элементами типа float

double max_elem(int n,float array[])

{

float value=array[0];

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

value=value>array[i]?value:array[i];

cout<<"\nДля (float) : ";

return double(value);

}

//функция для массивов с элементами типа double

double max_elem(int n,double array[])

{

double value=array[0];

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

value=value>array[i]?value:array[i];

cout<<"\nДля (double): ";

return value;

}

void main()

{

int x[]={10,20,30,40,50,60};

long f[]={12l,44l,5l,22l,37l,30l};

float y[]={0.1,0.2,0.3,0.4,0.5,0.6};

double z[]={0.01,0.02,0.03,0.04,0.05};

cout<<"max_elem(6,x)="<<max_elem(6,x);

cout<<"max_elem(6,f)="<<max_elem(6,f);

cout<<"max_elem(6,y)="<<max_elem(6,y);

cout<<"max_elem(5,z)="<<max_elem(5,z);

}

Результат работы программы:

Для (int) : max_elem(6,x)=60

Для (long) : max_elem(6,f)=44

Для (float) : max_elem(6,y)=0.6

Для (double): max_elem(5,z)=0.05

2. Определить семейство функций, каждая из которых подсчитывает количество нулевых элементов одномерного массива параметризованного типа.

#include <iostream.h>

template <class D>

long count0(int, D*); //прототип шаблона

void main()

{

int A[]={1,0,6,0,4,10};

int n=sizeof(A)/sizeof A[0];

cout<<"\ncount0(n,A)="<<count0(n,A);

float X[]={10.0,0.0,3.3,0.0,2.1};

n=sizeof(X)/sizeof X[0];

cout<<"\ncount0(n,X)="<<count0(n,X);

}

//шаблон функций для подсчета количества нулей в массиве

template <class T>

long count0(int size, T* array)

{

long k=0;

for (int i=0;i<size;i++)

if (int(array[i])==0) k++;

return k;

}

Результат выполнения программы:

count0(n,A)=2

count0(n,X)=2

6 Контрольные вопросы

  1. Как и с какой целью используется перегрузка функций?

  2. Каким образом выполняется распознавание перегруженных функций при их вызове?

  3. Можно ли при использовании перегруженных функций задавать начальные значения их параметров?

  4. Каким образом описывается шаблон семейства функций?

  5. Опишите схему параметризации шаблона функций.

  6. Перечислите основные свойства параметров шаблона.

  7. Может ли созданная с помощью шаблона функция иметь то же имя, что и явно определенная функция?

7 Варианты заданий для самостоятельного решения

1. Перегрузить функцию add для суммирования одномерных массивов типа int и float и сцепления строк.

2. Описать шаблон функции, которая меняет местами минимальный и максимальный элементы массива.

3. Перегрузить функцию area, вычисляющую площадь круга по его радиусу, прямоугольника и треугольника по их сторонам.

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

5. Перегрузить функцию perimetr, вычисляющую периметр круга по его радиусу, прямоугольника и треугольника по их сторонам.

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

7. Перегрузить функции input и output для ввода и вывода на экран массивов и матриц.

8. Описать шаблон функции, формирующей массив, каждый элемент которого равен минимальному из соответствующих значений двух других массивов – параметров.

9. Перегрузить функцию distance вычисления расстояния между двумя точками в двумерном и трехмерном пространстве.

10. Разработать шаблон функции сортировки элементов массива методом пузырька.

11. Перегрузить функцию min_el поиска минимального элемента в массивах и матрицах различного типа.

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

13. Перегрузить функцию null_count определения количества нулей в массивах и матрицах различного типа.

14. Описать шаблон функции, находящей минимальный элемент в массиве и заменяющей его заданным числом.

15. Перегрузить функцию movement определения пройденного расстояния при равномерном и равноускоренном движениях тела.

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

17. Перегрузить функцию triangle вычисления площади треугольников: равностороннего (по стороне), равнобедренного (по основанию и высоте), обычного (по трем сторонам).

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

19. Перегрузить функцию volume определения объемов: шара по его радиусу (V=4/3R2), конуса по радиусу основания и высоте (V=1/3r2h), усеченного конуса по радиусам двух оснований и высоте (V=1/3h(r2+r12+rr1)).

20. Разработать шаблон функции, находящей среднее арифметическое элементов массива.

21. Перегрузить функции: generate заполнения массивов и матриц случайными числами заданного диапазона и output вывода их на экран.

22. Описать шаблон функции, которая считает сумму элементов главной диагонали матрицы.

23. Перегрузить функцию surface_area определения площади поверхности: шара по его радиусу (S=4R2), цилиндра по радиусу основания и высоте (S=2r(r+h)), усеченного конуса по радиусам двух оснований и образующей (S=((r+r1)+r2+r12)).

24. Описать шаблон функции, находящей среднеквадратическое значение элементов матрицы.

25. Перегрузить функцию mult умножения массива и матрицы на число.

26. Разработать шаблон функции сложения двух матриц.

27. Перегрузить функцию sub_array нахождения разности двух массивов и матриц.

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