Функции. Перегрузка функций. Шаблоны функций
Автор: Nag1b • Май 17, 2022 • Лабораторная работа • 5,453 Слов (22 Страниц) • 207 Просмотры
ФГБОУ ВО «Чувашский государственный университет им. И. Н. Ульянова»
Факультет информатики и вычислительной техники
Кафедра вычислительной техники
Лабораторная работа № 5
По дисциплине «Объектно-ориентированное программирование»
Функции. Перегрузка функций. Шаблоны функций.
Вариант 2
Выполнил: студент гр. ИВТ-43-19
Григорьев Антон Юрьевич
Проверил: доцент
Обломов Игорь Александрович
Чебоксары 2020 г.
Цель работы: Изучить принцип работы функций, перегрузку функций, а также шаблоны функций. Научиться применять всё это на практике.
Ход работы:
#include <iostream>
#include <iomanip>
#include <cmath>
#include <string>
using namespace std;
struct AgeData {
int Age;
int Data;
};
void ex1 (double xmin, double xmax, double dx, double eps);
void ex2 (void (*funcptr)(double, double, double, double), double xmin, double xmax, double dx, double eps);
double ex3a (double *a, int n);
double ex3b (double *a, int n);
double ex3c (double *a, int n);
int kolvo (string a);
int ex5a (int **a, int n, int m);
void ex5b (int **a, int n, int m);
void vivod (AgeData *a, AgeData *b);
void ex7sort (int *a, int n, int k = 0);
int ex8a (int *a, int n);
int ex8b (int *a, int n);
int ex8c (int *a, int n);
template <typename T>
T kol(T **a, T n, T m)
{
int kolj = 0;
for (int j = 0; j < m; j ++) {
bool f;
for (int i = 0; i < n; i ++)
if (a[i][j] == 0) {
f = 1;
break;
}
if (!f) kolj ++;
f = 0;
}
return kolj;
}
int main ()
{
setlocale(LC_ALL, "Rus");
// Ex. 1
cout << "\nEx. 1\n";
double eps = 0.001, x, xmin = 1, xmax = 2, dx = 0.1;
ex1 (xmin, xmax, dx, eps);
// Ex. 2
cout << "\nEx. 2\n";
void (*funcptr)(double, double, double, double) = ex1;
ex2(funcptr, xmin, xmax, dx, eps);
// Ex. 3
cout << "\nEx. 3\n";
int n = 10;
double *a = new double[n]; // Выделение памяти для массива
for (int i = 0; i < n; i++) // Заполнение массива *взято для примера*
a[i] = i + 1;
cout << "\n\tСумма положительных элементов массива: " << ex3a(a, n);
cout << "\n\tПроизведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами: " << ex3b(a, n);
ex3c(a, n);
cout << "\n\tЭлементы массива по убыванию: ";
for (int i = 0; i < n; i ++)
cout << a[i] << " ";
cout << "\n\n";
delete [] a;
// Ex. 4
cout << "\nEx. 4\n";
string ab = "v3n8567-9265-cxmi5y44eurhu5vyvf34j857843758473-c12340756v2b34n 0p73460-5cnv3124";
cout << "\tКоличество числовых символов: " << kolvo(ab);
// Ex. 5
cout << "\nEx. 5\n";
int n1 = 5, m1 = 5;
cout << "\tРазмерность двумерного массива:\n\t\tДлина столбцов: " << n1;
cout << "\n\t\tДлина строк: " << m1 << endl;
int **a1 = new int* [n1];
for (int i = 0; i < n1; i++)
a1[i] = new int [m1 + 1];
...