Professional Documents
Culture Documents
Lab 5
Lab 5
Національний технічний
університет
«Дніпровська політехніка»
Факультет інформаційних
технологій Кафедра інформаційних
технологій та комп’ютерної
інженерії
Виконав студент
групи 123-23-2
Т.C.Ларко
Перевірив
Доцент каф ITKI
Т.М.Булана
Дніпро 2023
Лабораторна
робота №5
Робота з динамічними векторами та матрицями.
Розробка багатомодульної програми
Мета роботи: закріпити знання по роботі з динамічними масивами даних,
основним алгоритмом обробки векторів та матриць, а також навички
створення багатомодульних програм з елементами мови С++.
Хід роботи
1. Файл mylib.h з оголошеннями функцій
// mylib.h
#ifndef MYLIB_H
#define MYLIB_H
void getStat(const double *data, int count, double *pmin, double *pmax, double
*pavg);
void getStat(const double **data, int rows, int cols, double *pmin, double *pmax,
double *pavg);
// mylib.cpp
#include "mylib.h"
#include <stdio.h>
void getStat(const double *data, int count, double *pmin, double *pmax,
double *pavg) {
*pmin = min(data, count);
*pmax = max(data, count);
*pavg = avg(data, count);
}
void getStat(const double **data, int rows, int cols, double *pmin,
double *pmax, double *pavg) {
*pmin = min(data, rows, cols);
*pmax = max(data, rows, cols);
*pavg = avg(data, rows, cols);
}
#include "mylib.h"
#include <stdio.h>
int main() {
int rows, cols;
printf("Enter the number of rows: "); // Запитуємо кількість рядків
scanf("%d", &rows);
printf("Enter the number of columns: "); // Запитуємо кількість стовпців
scanf("%d", &cols);
// Виділення пам'яті для вектора та матриці
double *v = new double[rows];
double **m = new double *[rows];
for (int i = 0; i < rows; i++)
{ m[i] = new double[cols];
}
// Введення та виведення вектора
inputFromConsole(v, rows);
print(v, rows);
// Введення та виведення матриці
inputFromConsole(m, rows, cols);
print((const double **)m, rows, cols);
// Тестування функцій статистики
double min, max, avg;
getStat(v, rows, &min, &max, &avg);
printf("Vector - Min: %lf, Max: %lf, Avg: %lf\n", min, max, avg);
getStat((const double **)m, rows, cols, &min, &max, &avg);
printf("Matrix - Min: %lf, Max: %lf, Avg: %lf\n", min, max, avg);
// Звільнення виділеної пам'яті
delete[] v;
for (int i = 0; i < rows; i++)
{ delete[] m[i];
}
delete[] m;
return 0;
}
Висновок:
Запровадив динамічне виділення пам'яті та можливість вводу даних через консоль для векторів та
матриць, що робить програму гнучкою для різних сценаріїв використання. Інтегровані функції для
статистичного аналізу дозволяють користувачам швидко отримувати ключові дані, такі як мінімум,
максимум та середнє. Правильне управління пам'яттю гарантує ефективність та безпеку
програми..