Добавил:
Только когда поступишь в технический вуз поймешь на сколько ты гуманитарий Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Вариант 18 / ПР-3 вар 18

.pdf
Скачиваний:
2
Добавлен:
07.12.2024
Размер:
362.7 Кб
Скачать

СОДЕРЖАНИЕ

ВВЕДЕНИЕ..................................................................................................................

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

Соседние файлы в папке Вариант 18