Файл: Разработка алгоритмов и программ обработки массивов данных по дисциплине Алгоритмы и структуры данных.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