
Вариант 18 / ПР-3 вар 18
.pdfСОДЕРЖАНИЕ
ВВЕДЕНИЕ.................................................................................................................. |
4 |
|
1 |
ОСНОВНОЙ РАЗДЕЛ ............................................................................................. |
5 |
2 |
БЛОК–СХЕМА АЛГОРИТМА ............................................................................... |
6 |
3 |
ИСХОДНЫЙ КОД ................................................................................................... |
7 |
4 |
ПРИМЕР РАБОТЫ ПРОГРАММЫ ....................................................................... |
8 |
ЗАКЛЮЧЕНИЕ ........................................................................................................... |
9 |
|
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ............................................... |
10 |
3
ВВЕДЕНИЕ
В данной практической работе требуется применить двумерные массивы на примере циклического сдвига строк вниз на k позиций.
Постановка задачи:
Разработать программу, запрашивающую ввода строк и столбцов матрицы,
количество сдвигов в матрицы.
В качестве параметров числа количество строк и столбцов и количество сдвигов. В программе количество строк, столбцов и сдвигов будут храниться как переменные целочисленного типа.
Необходима реализация проверки ввода на логичность введенных (коли-
чество элементов массива не равно нулю или отрицательному числу).
При успешном вводе данных пользователю должен быть выдана матрица после сдвига.
4
1 ОСНОВНОЙ РАЗДЕЛ
Во время работы программы пользователь вводит параметр n – количество строк матрицы, m – количество столбцов матрицы, k – количество сдвигов.
После ввода необходимых данных с помощью двумерного массива будет составлена матрица для хранения результатов, далее заполняем новую матрицу с учётом сдвига, находим позицию для каждой строки и копируем результат об-
ратом в исходную матрицу.
Пользователь сможет ввести параметры n – количество строк; m – количе-
ство столбцов матрицы; k – количество сдвигов.
После будет произведена проверка на введенные элементы матрицы:
< ; |
(1) |
где i – текущая строка матрицы, n – общее количество строк в матрице.
< ; |
(2) |
где j – текущая столбец матрицы, m – общее количество столбцов в мат-
рице.
Если это условия является истинным, то программа выдаст ответ, виде мат-
рицы.
5

2 БЛОК–СХЕМА АЛГОРИТМА
Представим описание алгоритма в графическом виде на рисунке 2.1.
Рисунок 2.1 – Блок-схема алгоритма программы
6

3 ИСХОДНЫЙ КОД
Программная реализация алгоритма для решения задачи представлена
ниже.
Листинг 3.1 – Процедура нахождение наиболее часто встречающееся число массива
#include <iostream> #include <vector> using namespace std;
void shiftMatrixDown(vector<vector<int>>& matrix, int n, int m, int k) { k = k % n;
if (k == 0) return;
vector<vector<int>> shifted(n, vector<int>(m)); for (int i = 0; i < n; ++i) {
int newRow = (i + k) % n; shifted[newRow] = matrix[i];
}
matrix = shifted;
}
int main() {
int n, m, k;
cout << "Введите количество строк (n): "; cin >> n;
cout << "Введите количество столбцов (m): "; cin >> m;
cout << "Введите количество сдвигов (k): "; cin >> k;
vector<vector<int>> matrix(n, vector<int>(m)); cout << "Введите элементы матрицы:" << endl; for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) { cin >> matrix[i][j];
}
}
shiftMatrixDown(matrix, n, m, k);
cout << "Результат матрицы после сдвига:" << endl; for (const auto& row : matrix) {
for (const auto& elem : row) { cout << elem << " ";
}
cout << endl;} return 0;}
7

4 ПРИМЕР РАБОТЫ ПРОГРАММЫ
Пример работы программы, когда неверный ввод n=−1; m=–99 k=0 пред-
ставлен на рисунке 4.1.
Рисунок 4.1– Пример работы программы – Неверный ввод
Пример работы программы, когда сдвиг не происходит n =2; m =3; k=0
представлен на рисунке 4.2.
Рисунок 4.2 – Пример работы программы – сдвиг не произошел из-за параметра k
Пример работы программы, когда сдвиг произошел n = 3; m = 3; k = 1 пред-
ставлен на рисунке 4.3.
Рисунок 4.3 – Пример работы программы – сдвиг произошёл
Пример работы программы, когда сдвиг произошел на 2, n = 4; m= 4; k =2
представлен на рисунке 4.4.
Рисунок 4.4 – Пример работы программы – попадание в точки фигур
8
ЗАКЛЮЧЕНИЕ
В ходе выполнения данной практической работы была реализована про-
грамма с двумерным массивом. Также были приобретены навыки работы с мате-
матическими и логическими выражениями на языке программирования C++.
9
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1.Лозовский В.В. Алгоритмические основы обработки данных: учеб-
ное пособие / Лозовский В.В., Платонова О.В., Штрекер Е.Н. — М.: МИРЭА –
Российский технологический университет, 2022. – 337 с.
2.Платонова О.В. Алгоритмические основы обработки данных: мето-
дические указания / Платонова О.В., Асадова Ю.С., Расулов М.М. — М.:МИРЭА
– Российский технологический университет, 2022. — 73 с.
3.Белик А.Г. Алгоритмы и структуры данных: учебное пособие / А.Г.
Белик,В.Н. Цыганенко. — Омск: ОмГТУ, 2022. — 104 с. — ISBN 978-5-8149- 3498-7. — Текст: электронный // Лань: электронно-библиотечная система. —
URL: https://e.lanbook.com/book/343688 (дата обращения: 17.09.2024)
4.Павлов Л.А. Структуры и алгоритмы обработки данных / Л.А. Пав-
лов, Н.В.Первова. — 2-е изд., стер. — Санкт-Петербург: Лань, 2022. — 256 с. —
ISBN 978- 5-507-44105-1. — Текст: электронный // Лань: электронно-библио-
течная система.
5. Пантелеев Е.Р. Алгоритмы и структуры данных: учебное пособие
/ Е.Р. Пантелеев, А.Л. Алыкова. — Иваново: ИГЭУ, 2018. — 142 с. — Текст:
электронный // Лань: электронно-библиотечная система. — URL: https://e.lanbook.com/book/154576 (дата обращения: 23.09.2024)
10