Страницы

Уроки 47, 48 Решение задач с использованием двумерных массивов

Программа ввода и вывода элементов массива может выглядеть следующим образом:

program z1;
const nm=10; mm=10;
type mas=array[1..nm,1..mm] of real;
var a:mas;
i,j,n,m:integer;

procedure zap(var a:mas);
var i,j:integer;
begin
assign(input,'input.txt');
reset(input);
readln(n,m);
for i:=1 to n do
for j:=1 to m do
read(a[i,j]);
close(input);
end;

procedure vyv( a:mas);
var i,j:integer;
begin
assign(output,'output.txt');
rewrite(output);
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j]:8:2);
writeln;
end;
close(output);
end;

begin
zap(a);
vyv(a);
end.


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


Задания

Задание 1. Найти максимальный элемент массива и его номера. Элементы могут повторяться.
Указание: Поиск максимального элемента в двумерном массиве осуществляется таким же образом, как и в линейном массиве: предполагают, что максимальный - это первый элемент, затем максимальный сравнивается со следующим элементом, и если максимальный окажется меньше, то заменяем его значение.

Формат ввода:
В первой строке вводятся числа n и m - количество строк и столбцов массива
В следующих строках находятся элементы массива построчно

Формат вывода:
В первой строке - максимальный элемент
Во второй и следующих строках номер строки и номер столбца максимального элемента


      Тесты                 Посмотреть решение        

Экспериментальный раздел

1. Найти минимальный элемент массива и его номера. Элементы могут повторяться.
2. Найти минимальный элемент среди элементов главной и побочной диагоналей.



Задание 2. Найти количество отрицательных элементов в каждой строке.
Указание: количество элементов каждой строки хранить в одномерном массиве соответствующей размерности.


Формат ввода:
В первой строке вводятся числа n и m - количество строк и столбцов массива
В следующих строках находятся элементы массива построчно

Формат вывода:
В строку записаны числа - количества отрицательных элементов в каждой строке


        Тесты                Посмотреть решение         


Экспериментальный раздел

1. Найти количество кратных 5 элементов в каждой строке.
2. Найти количество кратных 5 и 2 элементов в каждой строке.
3. Найти количество кратных 5 или 2 элементов в каждой строке.
4. Найти количество отрицательных элементов в каждом столбце.



Задание 3. Дан двумерный массив А, состоящий из n x m вещественных чисел. Известно, что среди его элементов только два равны между собой. Напечатать их индексы.
Указание: Для просмотра первого элемента использовать циклы по переменным i и j, для просмотра второго элемента использовать циклы по переменным  i1 и j1.
Сравниваем a[i,j] c a[i1,j1]. Для исключения просмотра одного и того же элемента проверить условие (not((i=i1) and (j=j1))).


Формат ввода:
В первой строке вводятся числа n и m - количество строк и столбцов массива
В следующих строках находятся элементы массива построчно

Формат вывода:

В первой строке - индексы первого из равных элементов
Во второй строке - индексы второго из равных элементов


            Тесты       Посмотреть решение          



Задание 4. Определить, является ли данный квадратный массив симметричным относительно своей главной диагонали.
Указание: В задачах подобного типа необходимо увидеть зависимость между индексами элементов массива.
Если массив является симметричным, то для него выполняется равенство
 A[i, j]=A[j, i] для всех i=1..n и j=1..n.

Формат ввода:
В первой строке вводится число n - количество строк и столбцов массива
В следующих строках находятся элементы массива построчно

Формат вывода:
вывести YES или NO


          Тесты               
Посмотреть решение          


Экспериментальный раздел

1. Определить, является ли данный квадратный массив симметричным относительно своей побочной диагонали.


Задание 5. В массиве размерностью NxM к элементам четных столбцов прибавить элемент первого столбца соответствующей строки.
Указание: рассматриваем только четные столбцы и к элементу первой строки прибавляем a[1,1], к элементу второй строки прибавляем a[2,1] и т.д.

Формат ввода:
В первой строке вводятся числа n и m - количество строк и столбцов массива
В следующих строках находятся элементы массива построчно

Формат вывода:

Построчно элементы преобразованного массива

          Тесты             Посмотреть решение         


Экспериментальный раздел

1. В массиве размерностью NxM к элементам четных строк прибавить элемент первой строки соответствующего столбца.
2. К нечетным элементам прибавить соответствующие по строке элементы главной диагонали.


Задание  6. Заполнить массив А размером NxM "змейкой" следующим образом:

1
2
3
4
5
6
7
14
13
12
11
10
9
8
15
16
17
18
19
20
21
28
27
26
25
24
23
22

Указание: Для того, чтобы заполнить, надо вывести правило заполнения:
·         если строка нечетная, то   A[i,j]=(i-1)*m+j;
·         если строка четная, то     A[i,j]=i*m-j+1.

Формат вывода
Вывести построчно элементы массива

     Посмотреть решение          


Экспериментальный раздел

1. Заполнить массив размером m x n змейкой, начиная с последнего элемента.

22
23
24
25
26
27
28
21
20
19
18
17
16
15
8
9
10
11
12
13
14
7
6
5
4
3
2
1



Задания для самостоятельного решения

1. Заменить все отрицательные элементы на противоположные.

2. Дан массив  D(6,5). Выведите его на экран в виде таблицы.  Найдите и выведите  количество элементов больших среднего арифметического всех его элементов.

3. Заполнить массив А размером NxM следующим образом:

21
20
19
18
17
16
15
8
9
10
11
12
13
14
7
6
5
4
3
2
1




Тест