Алгоритм определения номера строки квадратной матрицы, сумма элементов которой максимальна С. Алгоритм определения номера строки квадратной матрицы, сумма эле. Отчет о практической работе 7 по дисциплине Информатика и программирование Вариант 8 студент группы
Скачать 0.59 Mb.
|
Министерство науки и высшего образования Российской Федерации Федеральное государственное автономное образовательное учреждение высшего образования «Южно-Уральский государственный университет» (национальный исследовательский университет) Высшая школа электроники и компьютерных наук Кафедра «Информационно-измерительная техника» Циклы (название практической работы) ОТЧЕТ о практической работе №7 по дисциплине «Информатика и программирование» Вариант 8 Выполнил: студент группы ____________/ / «___» ___________ 2020 г. Отчет принят: ___________/ / «___» ____________2020 г. Челябинск 2020 Цель работы: научиться строить циклические алгоритмы, записывать алгоритмы в виде схемы алгоритма и на алгоритмическом языке. Задание: построить алгоритм определения номера строки квадратной матрицы, сумма элементов которой максимальна. Ход работы 1) Определение входных и выходных данных: входными данными (аргументами) являются вещественные числа (int) rows и cols – количество строк и столбцов матрицы; выходными данными (результатом) являются вещественные числа (int) nom и max – номер строки с максимальной суммой значений и сумма значений строки. 2) Решение задачи: пользователь вводит количество столбцов и строк из которых будет состоять матрица; создаем функцию выделения места в оперативной памяти под создание двумерного динамического массива; создаем функцию для вывода динамического массива на экран; используя цикл for заполняем массив случайными двузначными цифрами; создаем цикл для подсчета суммы элементов в строке и сравнения полученных значений для вычисления максимальной суммы с номером этой строки; выводим на экран полученную матрицу, номер строки с максимальной суммой и значение суммы значений строки; очищаем место в оперативной памяти под созданный массив. 3)Представление алгоритма в виде схемы алгоритмов: Начало Ввод: rows, cols arr[i][j] = 0 i = 0, j = 0 i < rows, j < cols sum += arr[i][j] i++; j++ max = sum nom = i + 1 Конец 4) Запись алгоритма на алгоритмичном языке: алг определения номера строки квадратной матрицы, сумма элементов которой максимальна арг вещ rows и cols нач ввод rows и cols sum = 0 max = 0 i = 0 j = 0 нцпока i < rows, j < cols sum += arr[i][j] еслиsum >= max тоmax = sum; nom = i + 1; кн вывод nom, max кон 5) Листинг программы #include #include #include #include #include using namespace std; //Печать матрицы void print(int** arr, int rows, int cols) { for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { cout << arr[i][j] << " "; } cout << endl; } } //Выделение памяти под двумерный динамический массив int** matrix(int rows, int cols) { int** arr = new int* [rows]; for (int i = 0; i < rows; i++) { arr[i] = new int[cols]; } return arr; } int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); srand(time(nullptr)); // выполнение генерации случайных чисел int rows; int cols; int sum, max = 0, nom; cout << "Программа создает матрицу с необходимым количеством столбцов и строк,\n заполняет ее случайными двузначными цыфрами и указывает строку с максимальной суммой элементов." << endl << endl; cout << "Введите желаемое количество строк: "; cin >> rows; cout << endl; cout << "Введите желаемое количество столбцов: "; cin >> cols; cout << endl; int** arr = matrix(rows, cols); //Заполнение массива случайными числами for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { arr[i][j] = rand() % 20; } } for (int i = 0; i < rows; i++) { int sum = 0; for (int j = 0; j < cols; j++) { sum += arr[i][j]; } if (sum >= max) { max = sum; nom = i + 1; } } cout << "Создание матрицы" << endl; print(arr, rows, cols); cout << endl; cout << "Строка с наибольшей суммой: " << nom << " ,сумма значений равна: " << max << "." << endl << endl; //Очистка оперативной памяти for (int i = 0; i < rows; i++) { delete[]arr[i]; } delete[]arr; } Исходный код программы представлен на рисунках 1-3. Рисунок 1. Рисунок 2. Рисунок 3. 6) Контрольный пример. Результаты работы программы представлены на рисунке 4. Рисунок 4. 7) Выводы по работе. При выполнении работы были изучены основы написания программы на языке С++, с помощью циклического алгоритма. Была написана программа для определения номера строки квадратной матрицы, сумма элементов которой максимальна. |