Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 6(информатика).doc
Скачиваний:
11
Добавлен:
09.11.2019
Размер:
108.54 Кб
Скачать

Лабораторная работа № 10 Двумерные массивы

Двумерный массив можно представить себе в виде таблицы, в которой все строки и столбцы пронумерованы.

Каждый элемент такого массива имеет два индекса:

Первый индекс – это номер строки;

Второй индекс – номер столбца.

A[1,1]

A[1,2]

A[1,3]

A[1,4]

A[1,5]

A[2,1]

A[2,2]

A[2,3]

A[2,4]

A[2,5]

A[3,1]

A[3,2]

A[3,3]

A[3,4]

A[3,5]

A[4,1]

A[4,2]

A[4,3]

A[4,4]

A[4,5]

Создание двумерного массива

Двумерные массивы создаются путем ввода данных с клавиатуры, с помощью случайных чисел и вычислений по формулам.

Для формирования массива используется два вложенных цикла. Первый цикл перебирает строки, а второй – столбцы.

Вариант 1

For i:=1 to n do

for j:=1 to m do

readln (a[i , j]);

Вариант 2

For i:=1 to n do

for j:=1 to m do

a[i , j]:=random(100);

Вариант 3

For i:=1 to n do

for j:=1 to m do

a[i , j]:=i*j;

Вывод массива в виде таблицы

For i:=1 to n do

begin

for j:=1 to m do

write (a[i , j]);

writeln;

end;

Пример: Ввести двумерный вещественный массив, выполнить его транспонирование: поменять строки и столбцы местами. Осуществить контрольный вывод исходного массива и массива результатов. Результаты работы программы должны быть представлены в виде:

Введите количество строк и столбцов

2 2

Введите массив А

a(1,1)=1

a(1,2)=2

a(2,1)=3

a(2,2)=4

Массив A

1.0 2.0

3.0 4.0

Массив B

1.0 3.0

2.0 4.0

Рисунок 1.1 Блок-схема

program prim_11;

const row=10;col=10;

type

matr1=array[1..row,1..col] of real;

matr2=array[1..col,1..row] of real;

var

i,j,n,m:integer;

a:matr1; b:matr2;

begin

{ввод массива A}

writeln('Введите к-во строк и столбцов'); readln(n,m);

writeln('Введите массив А');

for i:=1 to n do

for j:=1 to m do

begin

write('a(',i:1,',',j:1,')=');

readln(a[i,j]);

end;

{вывод массива A}

writeln('Массив A');

for i:=1 to n do

begin

for j:=1 to m do write(a[i,j]:7:1);

writeln;

end;

{формирование массива В}

for i:=1 to n do

for j:=1 to m do

b[j,i]:=a[i,j];

{вывод массива B}

writeln('Массив B');

for i:=1 to n do

begin

for j:=1 to m do write(b[i,j]:7:1);

writeln;

end;

readln;

end.

Практическая часть

Задание 1: Составить программу для выполнения заданных действий над двумерным массивом вещественных чисел A(N,M). В программе предусмотреть ввод значений его элементов, вывод исходной и, при необходимости, преобразованной матриц.

1. Вычислить и запомнить сумму и число положительных элементов каждого столбца матрицы. Результаты отпечатать в виде двух строк.

2. Вычислить и запомнить сумму и число отрицательных элементов каждой строки матрицы. Результаты отпечатать в виде двух столбцов.

3. Вычислить сумму и число элементов матрицы, находящихся под главной диагональю и на ней.

4. Вычислить сумму и число элементов матрицы, находящихся над главной диагональю и на ней.

5. Записать на место отрицательных элементов матрицы нули, а на место положительных элементов матрицы — единицы.

6. Найти максимальный элемент на главной диагонали матрицы и присвоить нулевые значения другим элементам строки и столбца, на пересечении которых он стоит.

7. Найти наибольший и наименьший элементы матрицы и поменять их местами

8. Найти строку с наибольшей и наименьшей суммой элементов. Вывести на печать найденные строки и суммы их элементов.

9. Найти столбец с наибольшей и наименьшей суммой элементов. Вывести на печать найденные столбцы и суммы их элементов.

10. Каждый элемент строки разделить на предварительно рассчитанную сумму элементов этой строки.

11. Удалить последнюю строку матрицы и вывести ее на печать.

12. Удалить последний столбец матрицы и вывести ее на печать.

13. Найти максимальный элемент на главной диагонали матрицы.

14. Найти максимальный по модулю элемент матрицы и вычислить сумму столбца, в котором он находится.

15. Найти минимальный по модулю элемент матрицы и вычислить сумму строки, в которой он находится.

Задание 2:

1.Найти сумму всех четных элементов двумерного массива.

2.Найти сумму всех элементов двумерного массива, расположенных на главной диагонали.

3.Найти номер строки и столбца максимального элемента.

4.Имеется двумерный массив целых чисел. Найти номер строки, для которой среднеарифметическое значение ее элементов максимально.

5.В двумерном массиве целых чисел поменять местами строки и столбцы с одинаковыми номерами.

6.Найти минимальный элемент среди максимальных элементов строк двумерного массива целых чисел. Определить номер строки и столбца такого элемента.

7.Удалить столбец двумерного массива целых чисел, в котором находится максимальный элемент этого массива.

8.Найти все неповторяющиеся элементы двумерного массива целых чисел.

9.Заполнить двумерный массив целыми числами от 1 до 100 по спирали.

10.В двумерном массиве целых чисел заменить все элементы, меньшие суммы элементов первой строки на эту сумму.

11.Отсортировать строки массива целых чисел по убыванию.

12.Отсортировать нечетные столбцы массива по возрастанию.

13. Ввести вещественную матрицу размерности n * m построчно, а вывести по столбцам.

14. Выяснить сколько положительных элементов содержит матрица размерности n * m, если aij = sin(i+j/2).

15. Дана квадратная вещественная матрица размерности n. Является ли матрица симметричной относительно главной диагонали.

Задание 3:

2. Дана квадратная вещественная матрица размерности n. Сравнить сумму элементов матрицы на главной и побочной диагоналях.

3. Дана квадратная вещественная матрица размерности n. Найти количество нулевых элементов, стоящих:

- выше главной диагонали;

- ниже главной диагонали;

- выше и ниже побочной.

4. Сформировать матрицу по следующему правилу

а).      б).      в). 

5. Дана вещественная матрица размерности n * m. Сформировать вектор b, в котором элементы вычисляются как:

- произведение элементов соответствующих строк;

- среднее арифметическое соответствующих столбцов;

- разность наибольших и наименьших элементов соответствующих строк;

- значения первых отрицательных элементов в столбце.

6. Дана вещественная матрица размерности n * m. Вывести номера столбцов, содержащих только отрицательные элементы.

7. Дана вещественная матрица размерности n * m. Вывести номера строк, содержащих больше положительных элементов, чем отрицательных.

8. Дана вещественная матрица размерности n *  m. Найти общую сумму элементов только тех столбцов, которые имеют хотя бы один нулевой элемент.

9. Дана вещественная матрица размерности n * m. Поменять местами строки с максимальным и минимальным элементами.

10. Дана вещественная матрица размерности n * m. Удалить k столбец матрицы.

11. Дана вещественная квадратная матрица размерности n. Поменять местами элементы главной и побочной диагоналей матрицы:

- по строкам;

- по столбцам.

12. Дана вещественная матрица размерности m *  n. Упорядочить элементы каждой четной строки по возрастанию.

13. Дана вещественная матрица размерности m *  n. Расположить все элементы матрицы по убыванию. Обход матрицы осуществлять по строкам.

14. Дана вещественная матрица размерности m *  n. Определить индексы первого нулевого элемента матрицы. Обход матрицы осуществлять по столбцам.

15. Дана действительная матрица размера n * 9. Найти среднее арифметическое:

а) элементов каждого столбца;

б) элементов каждой строки, имеющей четный номер.

Задание 4:

1. Дано натуральное число n. Выяснить, сколько положительных элементов содержит матрица [ai j] ij=1,...,n, если ai j= sin (i+j/2).

2. Дана действительная матрица размера m * n, в которой не все элементы равны 0. Получить новую матрицу путём деления всех элементов данной матрицы на её наибольший по модулю элемент.

3. Дана действительная квадратная матрица порядка n. Выяснить, верно ли, что наибольшее из значений элементов главной диагонали больше, чем наименьшее из значений элементов побочной диагонали.

4. Дана действительная матрица размера m? n. Найти сумму наибольших значений элементов ее строк.

5. Даны натуральное число n, действительная квадратная матрица порядка n, действительные числа a1,...,an+5. Элементы последовательности a1,...,an+5 домножить на 10, если наибольший элемент матрицы (в предположении, что такой элемент единственный) находится на главной диагонали, и на 0.5 в противном случае.

6. Дана целочисленная квадратная матрица порядка 8. Найти наименьшее из значений элементов столбца, который обладает наибольшей суммой модулей элементов. Если таких столбцов несколько, то взять первый из них.

7. В заданном двумерном массиве А[1:m, 1:n] заменить нулями элементы, стоящие в строках или столбцах, где имеются нули. Можно завести вспомогательный одномерный массив, но нельзя заводить вспомогательный двумерный массив.

8. В массиве А[1:m, 1:n] все числа различны. В каждой строке находится минимальный элемент, затем среди этих чисел выбирается максимальное. Напечатать номер строки массива А, в которой расположено выбранное число.

9. Задан массив А[1:m, 1:n]. Некоторый элемент этого массива назовем Седловой точкой, если он является одновременно наименьшим в своей строке и наибольшим в своем столбце. Напечатать номер строки и столбца какой-нибудь Седловой точки и напечатать число 0, если такой точки нет.

10. Дважды монотонный. Массив чисел А[1:m, 1:n] упорядочен по  по строкам и по столбцам, то есть

A[i, 1]  A[i, 2]  ... при всех I = 1, ..., m,

A[1,j]  А[2,j]  ... при всех j = 1, ..., n.

Найти элемент массива, равный заданному числу х, и напечатать НЕТ, если такого элемента не окажется.

11. Написать программ, которая проверяет, является ли введенная с клавиатуры квадратная матрица магическим квадратом. Магическим квадратом называется матрица, сумма элементов которой в каждой строке, в каждом столбце и по каждой диагонали одинакова.

12. Сформировать таблицу Пифагора (таблица умножения) и вывести ее на экран.

13. Задан двумерный массив В[10, 10], заполненный случайными числами из (-10,10). Найти и вывести на экран те элементы массива, которые больше заданного числа k.

14. Написать программу, которая вычисляет определитель квадратной матрицы третьего порядка.

15. В заданной матрице необходимо выполнить сортировку нечетных строк по возрастанию, а четных по убыванию.