1 семестр / Лабароторная работа №7 прога
.docxФГБОУ ВО
«Уфимский государственный авиационный технический университет»
Кафедра ТК
ОТЧЕТ
по лабораторной работе № 7
по дисциплине «Программирование»
Вариант № 10
Выполнил: студент гр. ИВТ-127Б
Проверил: доцент каф. ТК
Блинова Д. В.
Уфа 2021
Тема работы: Простая обработка двумерных массивов.
Цель работы: Получение навыков реализации программы на языке С++ с использованием двумерных массивов.
Задачи работы:
Составить блок-схему алгоритма работы программы;
Написание программы на языке С++ с использованием двумерных массивов;
Тестирование работоспособности программы для различных исходных данных
Вариант № 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 |
Max=0, 1> max, 1>0, условие выполняется max=1
Max=1, 2> max, 2>1, условие выполняется max=2
Max=3, 3> max, 3>2, условие выполняется max=3
Max=4, 4> max, 4>3, условие выполняется max=4
Ответ: Max=4
Вывод: В ходе выполнения лабораторной работы были получены навыки реализации программ на языке С++ с использованием двумерных массивов.
Контрольные вопросы:
Название регулярный тип массивы получили за то, что в них объединены однородные элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элемента в массиве.
Размерность массива — это количество индексов, необходимое для однозначной адресации элемента в рамках массива.
В объявлении массива C++ размер массива указывается после имени переменной, а не после имени типа, как в некоторых других языках. В следующем примере объявляется массив значений типа Double 1000, которые будут выделяться в стеке.
Доступ к элементу одномерного массива осуществляется при помощи конструкции. имя_массива[индекс]. причем эту конструкцию можно использовать как в правой части операции присваивания (тогда берется значение указанного элемента массива), так и в левой (тогда указанному элементу массива присваивается значение выражения, стоящего в правой части этой операции присваивания).
Элементы многомерного массива располагаются в памяти в порядке возрастания самого правого индекса. Поэтому правый индекс будет изменяться быстрее, чем левый (левые). При обращении к многомерным массивам компьютер много времени затрачивает на вычисление адреса, так как при этом приходится учитывать значение каждого индекса [5.2].
Формирование массивов с переменными размерами (динамических массивов) можно организовать с помощью указателей и средств динамического распределения памяти.