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

1 семестр / Лабароторная работа №7 прога

.docx
Скачиваний:
2
Добавлен:
16.05.2023
Размер:
295.73 Кб
Скачать

ФГБОУ ВО

«Уфимский государственный авиационный технический университет»

Кафедра ТК

ОТЧЕТ

по лабораторной работе № 7

по дисциплине «Программирование»

Вариант № 10

Выполнил: студент гр. ИВТ-127Б

Проверил: доцент каф. ТК

Блинова Д. В.

Уфа 2021

Тема работы: Простая обработка двумерных массивов.

Цель работы: Получение навыков реализации программы на языке С++ с использованием двумерных массивов.

Задачи работы:

  1. Составить блок-схему алгоритма работы программы;

  2. Написание программы на языке С++ с использованием двумерных массивов;

  3. Тестирование работоспособности программы для различных исходных данных

Вариант № 10

Задание:

Выполнение задания:

Решение задачи:

Для реализации данной задачи на вход подается двумерный массив одинаковой размерности M*M, создаем двумерный массив и заполняем его. Создаем два вложенных цикла, для прохода по каждому элементу массива, и проверяем является ли значение очередного числа i столбца и j строки большим чем значение переменной max (изначально max=0), если условие выполняется переменной max присваиваем новое значение.

Схема алгоритма работы программы:

Текст программы:

#include <iostream>

using namespace std;

int** GiveMem(int** massiv, int size) {

massiv = new int* [size];

for (int i = 0; i < size; i++) {

massiv[i] = new int[size];

}

return massiv;

}

void fillMatrix(int** massiv, int size) {

cout << endl;

int number = 0;

for (int i = 0; i < size; i++) {

for (int j = 0; j < size; j++) {

cout << "Значение ячейки " << i + 1 << "-й строки и " << j + 1 << "-го столбца" << endl;

cout << "a " << i + 1 << "_" << j + 1 << "=";

cin >> number;

massiv[i][j] = number;

}

}

}

void prinfMatrix(int** massiv, int size) {

cout << endl;

for (int i = 0; i < size; i++) {

for (int j = 0; j < size; j++) {

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

}

cout << endl;

}

}

int main(){

setlocale(0, "");

int** massiv = 0;

int size=0, max=0;

cout << "Поиск максимального элемента массива" << endl;

cout << endl << "Введите количество столбцов и строк " << endl;

cout << "M=";

cin >> size;

massiv = GiveMem(massiv, size);

fillMatrix(massiv, size);

prinfMatrix(massiv, size);

for (int i = 0; i < size; i++) {

for (int j = 0; j < size; j++) {

if (massiv[i][j] > max) max = massiv[i][j];

}

}

cout << "Максимальный элемент Max=" << max;

return 0;

}

Тестовый пример:

Возьмем двумерный массив 2*2 A=|1 2 |

|3 4 |

  1. Max=0, 1> max, 1>0, условие выполняется max=1

  2. Max=1, 2> max, 2>1, условие выполняется max=2

  3. Max=3, 3> max, 3>2, условие выполняется max=3

  4. Max=4, 4> max, 4>3, условие выполняется max=4

Ответ: Max=4

Вывод: В ходе выполнения лабораторной работы были получены навыки реализации программ на языке С++ с использованием двумерных массивов.

Контрольные вопросы:

  1. Название регулярный тип массивы получили за то, что в них объединены однородные элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элемента в массиве.

  2. Размерность массива — это количество индексов, необходимое для однозначной адресации элемента в рамках массива.

  3. В объявлении массива C++ размер массива указывается после имени переменной, а не после имени типа, как в некоторых других языках. В следующем примере объявляется массив значений типа Double 1000, которые будут выделяться в стеке.

  4. Доступ к элементу одномерного массива осуществляется при помощи конструкции. имя_массива[индекс]. причем эту конструкцию можно использовать как в правой части операции присваивания (тогда берется значение указанного элемента массива), так и в левой (тогда указанному элементу массива присваивается значение выражения, стоящего в правой части этой операции присваивания).

  5. Элементы многомерного массива располагаются в памяти в порядке возрастания самого правого индекса. Поэтому правый индекс будет изменяться быстрее, чем левый (левые). При обращении к многомерным массивам компьютер много времени затрачивает на вычисление адреса, так как при этом приходится учитывать значение каждого индекса [5.2].

  6. Формирование массивов с переменными размерами (динамических массивов) можно организовать с помощью указателей и средств динамического распределения памяти.