Лабораторная работа № 8
Лабораторная работа № 8.
Работа с двумерными массивами в Pascal
1. Заполнение матрицы случайными числами.
Создайте программу, которая заполняет двумерный массив размером n×m случайными числами в диапазоне от 0 до 99. Выведите массив на экран.
Цель: научиться создавать и заполнять двумерные массивы случайными числами.
Алгоритм:
· Ввод размеров матрицы (n, m)
· Создание массива
· Заполнение случайными числами (0-99)
· Вывод матрицы
Пример кода:
pascal
program FillMatrix;var n, m, i, j: Integer;matrix:arrayofarrayofInteger;
beginwriteln('Введите размеры матрицы:');
readln(n, m);
SetLength(matrix, n, m); Randomize;
writeln('Сгенерированная матрица:');
fori :=0ton-1do
begin
forj :=0tom-1do
begin
matrix[i,j] := Random(100);
write(matrix[i,j]:4);
end;
writeln;
end;
end.
2. Сумма элементов главной диагонали.
Напишите программу, которая вычисляет сумму элементов главной диагонали квадратной матрицы размером n×n.
Цель: вычислить сумму элементов главной диагонали квадратной матрицы.
Алгоритм:
· Ввод размера матрицы (n)
· Создание квадратной матрицы
· Вычисление суммы
Пример кода:
pascal
program DiagonalSum;var n, i, sum: Integer;matrix:arrayofarrayofInteger;
beginwriteln('Введите размер матрицы:');
readln(n);
SetLength(matrix, n, n); // Заполнение и вывод матрицы
writeln('Введите элементы матрицы:');
fori :=0ton-1do
begin
forj :=0ton-1do
begin
read(matrix[i,j]);
write(matrix[i,j]:4);
end;
writeln;end;
// Подсчет суммы
sum :=0;
fori :=0ton-1do
sum := sum + matrix[i,i]; writeln('Сумма элементов главной диагонали: ', sum);
end.
3. Поиск максимального элемента в строке.
Создайте программу, которая находит максимальный элемент в каждой строке двумерного массива размером n×m. Выведите результаты.
Цель: найти максимальный элемент в каждой строке матрицы.
Алгоритм:
· Ввод размеров матрицы
· Поиск максимума в каждой строке
· Вывод результатов
Пример кода:
pascal
program MaxInRows;var n, m, i, j, max: Integer;matrix:arrayofarrayofInteger;
beginwriteln('Введите размеры матрицы:');
readln(n, m); // ... (аналогично предыдущим примерам)
writeln('Максимальные элементы в строках:');
fori :=0ton-1do
begin
max := matrix[i,0];
forj :=1tom-1do
ifmatrix[i,j] > maxthen
max := matrix[i,j];writeln('Строка ', i+1,': ', max);
end;
end.
4. Транспонирование матрицы.
Напишите программу, которая транспонирует матрицу размером n×m. То есть строки становятся столбцами, а столбцы — строками
Цель: получить транспонированную матрицу.
Алгоритм:
· Создание новой матрицы
· Обмен элементов (строки ↔ столбцы)
Пример кода:
pascal
program TransposeMatrix;var n, m, i, j: Integer;matrix, transposed:arrayofarrayofInteger;
begin// ... (аналогично предыдущим примерам)
SetLength(transposed, m, n); fori :=0ton-1do
forj :=0tom-1do
transposed[j,i] := matrix[i,j]; writeln('Транспонированная матрица:');
// Вывод результата
end.
5. Замена элементов побочной диагонали.
Создайте программу, которая заменяет элементы побочной диагонали квадратной матрицы размером n×n на число 100. Выведите измененную матрицу.
Цель: заменить элементы побочной диагонали на 100.
Алгоритм:
· Поиск элементов побочной диагонали
· Замена значений
Пример кода:
pascal
program ChangeSecondaryDiagonal;var n, i: Integer;matrix:arrayofarrayofInteger;
begin// ... (аналогично предыдущим примерам)
fori :=0ton-1do
matrix[i,n-1-i] :=100
Задачи разработка программ с двумерными массивами
1.
Сортировка строк матрицы:
Напишите программу, которая сортирует каждую строку двумерного массива
размером n×m по возрастанию.
2.
Подсчет четных элементов:
Создайте программу, которая подсчитывает количество четных элементов в каждой
строке двумерного массива размером n×m.
3.
Создание матрицы с заданной закономерностью:
Напишите программу, которая создает матрицу размером n×n,
где элементы главной диагонали равны 1, а остальные элементы равны 0.
4.
Поиск минимального элемента в столбце:
Создайте программу, которая находит минимальный элемент в каждом столбце
двумерного массива размером n×m.
5.
Умножение матриц:
Напишите программу, которая умножает две матрицы размером n×m и m×k.
Выведите результат.