Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Функции. Перегрузка функций. Шаблоны функций

Автор:   •  Май 17, 2022  •  Лабораторная работа  •  5,453 Слов (22 Страниц)  •  141 Просмотры

Страница 1 из 22

ФГБОУ ВО «Чувашский государственный университет им. И. Н. Ульянова»

Факультет информатики и вычислительной техники

Кафедра вычислительной техники

Лабораторная работа № 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];  

        

...

Скачать:   txt (14 Kb)   pdf (74.7 Kb)   docx (12.9 Kb)  
Продолжить читать еще 21 страниц(ы) »
Доступно только на Essays.club