Файл: Разработка алгоритмов и программ обработки массивов данных по дисциплине Алгоритмы и структуры данных.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 21.11.2023

Просмотров: 20

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

(СПбГУТ)

Кафедра безопасности информационных систем

ОТЧЁТ

по практической работе №1 на тему:
«Разработка алгоритмов и программ обработки массивов данных»

по дисциплине «Алгоритмы и структуры данных»

Выполнил: студент группы ИБ-92вп Кадамов Ш.Ф.

«16» февраля 2021 г. ___________/Кадамов Ш.Ф./

Принял: к.ф.-м.н., доцент, И.А. Моисеев

«ХХ» февраля 2021 г. ___________/ И.А. Моисеев /

САНКТ-ПЕТЕРБУРГ

2021

Цель работы



Цель работы: Разработка алгоритмов и программ обработки массивов данных.
Задача: Разработать алгоритм и программу умножения двух целочисленных матриц А (m1Хn1) и В (m2Хn2). Размер матриц (двумерных массивов) вводится с клавиатуры. На выходе программы – новая матрица C (mХn) с результатом умножения. Элементы матриц А (aij) и В (bkl) задаются случайным образом с использованием генератора случайных чисел в диапазоне от -100 до 100. Алгоритм программы должен учитывать математические правила умножения матриц.


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



Программа (код):
#include

using namespace std;

int main()

{

int строки1, строки2, столбцы1, столбцы2;

double** A, ** B, ** C;

system("chcp 1251");

system("cls");

cout << "----------------------------------------------------------------------------------------------------------";

cout << "\n!ПРЕДУПРЕЖДЕНИЕ! ==> Количество столбцов первой матрицы должно быть равно количеству строк второй матрицы\n";

cout << "----------------------------------------------------------------------------------------------------------\n\n";

cout << "Введите количество строк первой матрицы: ";

cin >> строки1;

cout << "Введите количество столбцов первой матрицы: ";

cin >> столбцы1;

cout << "Введите количество строк второй матрицы: ";

cin >> строки2;

cout << "Введите количество столбцов второй матрицы: ";

cin >> столбцы2;

if (столбцы1 != строки2)

{

cout << "Умножение невозможно!";

cin.get(); cin.get();

return 0;

}
A = new double* [строки1];

cout << "\nПервая матрица:" << endl;

for (int i = 0; i < строки1; i++)

{

A[i] = new double[столбцы1];

for (int j = 0; j < столбцы1; j++)

{

A[i][j] = rand() % 201 + (-100);

}

}
for (int i = 0; i < строки1; i++)

{

for (int j = 0; j < столбцы1; j++)

cout << A[i][j] << " ";

cout << endl;

}
B = new double* [строки2];

cout << "\nВторая матрица:" << endl;

for (int i = 0; i < строки2; i++)

{

B[i] = new double[столбцы2];

for (int j = 0; j < столбцы2; j++)

{

B[i][j] = rand() % 201 + (-100);

}

}
for (int i = 0; i < строки2; i++)

{

for (int j = 0; j < столбцы2; j++)

{

cout << B[i][j] << " ";

}

cout << endl;

}
C = new double* [строки1];

for (int i = 0; i < строки1; i++)

{

C[i] = new double[столбцы2];

for (int j = 0; j < столбцы2; j++)

{

C[i][j] = 0;

for (int k = 0; k < столбцы1; k++)

C[i][j] += A[i][k] * B[k][j];

}

}
cout << "\nПроизведение двух матриц:" << endl;

for (int i = 0; i < строки1; i++)

{

for (int j = 0; j < столбцы2; j++)

cout << C[i][j] << " ";

cout << endl;

}

cin.get(); cin.get();

return 0;

}
Скриншот 1:

Выводы



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

Содержание






Цель работы 2

Результаты выполнения работы 2

Выводы 4

Содержание 5