Вопросы для самопроверки
Двумерные массивы
Цель работы
Получение практических навыков работы с двумерными массивами.
Пример 1. Составить программу ввода и вывода двумерного массива А размерностью 10x15.
Решение. Формирование и вывод массива описаны в виде двух процедур, которые вызываются последовательно из основной программы. Надо заметить, что формирование двумерного массива можно осуществлять всеми тремя способами, описанными для одномерных массивов. Пусть в нашем примере элементы задаются генератором случайных чисел.
Program Example_14;
Const
n=10;
m=15;
Type dmyarray = Array[1..n,1..m] Of Integer;
Var
A: dmyarray;
Procedure Init(Var x: dmyarray); {процедура формирования массива}
Var
i, j: Integer;
Begin
For i:=l To n Do
For j:= 1 To m Do
x[i,j]:=-25+Random (51);
End;
Procedure Print (x: dmyarray); {процедура вывода массива на экран}
Var
i, j: Integer;
Begin
For i:=l To n Do Begin {вывод i-й строки массива}
For j:=1 To m Do
Write(x[i,j]:5);
Writeln; {переход на начало следующей строки}
End;
End;
Begin {основная программа}
Init(A); {вызов процедуры формирования массива}
Writeln('Массив A: ') ;
Print(A); {вызов процедуры вывода}
Readln;
End.
Пример2. Сформировать одномерный массив, каждый элемент которого равен сумме отрицательных элементов соответствующей строки заданной целочисленной матрицы.
Решение. Опишем одномерный массив, размерность которого равна количеству строк в двумерном массиве.
Const
n=10;
m=15;
Type
omyarray=Array [l..n] Of Integer;
dmyarray=Array[1..n,1..m] Of Integer;
Var
B: omyarray;
A: dmyarray;
Procedure Sum(x: dmyarray; Var y: omyarray);
Var i, j: Integer;
Begin
For i:=l To n Do Begin
y[i]:=0;
{задание начальных значений элементов массива суммы)
For j:=l To m Do {накопление суммы отрицательных}
If x[i,j]<0 Then y[i]:=y[i]+x[i,j];
End;
End;
В основной программе обращаемся к процедуре Sum(A,B) и остается только вывести на экран одномерный массив В, в котором записаны суммы отрицательных элементов каждой строки.
Пример3. Найти максимальный элемент массива и его индексы.
Решение. Так как элементы могут повторяться, то договоримся, что будем запоминать только индексы первого максимального элемента. Опишем процедуру, которой передается массив, и ее результатом являются значение максимального элемента и индексы первой встречи такого значения.
Procedure Maximum(x: dmyarray; Var max, maxi, maxj: Integer);
Var i, j: Integer;
Begin
max:=x[1,1]; maxi:=l; maxj:=l; {начальные значения}
For i:=l To n Do
For j:=l To m Do
If x[i,j]>max Then Begin {присвоение новых значений}
max:=x [ i,j];
maxi:=i; maxj:=j;
End;
End;
1. Из каких разделов состоит программа на Паскале?
2. Какие простые типы данных существуют в Паскале?
3. Что значит: «Турбо Паскаль – типизированный язык»?
4. Какие действия допустимы над величинами целого типа? Вещественного типа?
5. Как в Паскале осуществляется ввод и вывод данных?
6. Как в Паскале реализуется развилка?
7. Какого типа циклы реализуются в языке Паскаль? Каким образом?
8. В каких случаях используются циклы с параметром, с предусловием и с постусловием? Приведите примеры.
9. Как вводятся и используются в программах массивы?
10. В чем различие между одномерными массивами и двумерными?
11. Какова структура процедуры? Функции?
12. Какие параметры называют формальными и какие – фактическими?
13. В чем различие между локальными и глобальными переменными?
14. В чем отличия процедуры от функции?
15. Какие проблемы решаются при использовании файлов?
16. Какую роль в программе играет файловая переменная?
17. Какие операции и функции используются при работе с файлами?
18. Как запустить Турбо Паскаль?
19. Как в среде Турбо Паскаль запустить программу на выполнение?
20. Как в среде Турбо Паскаль выполнить трассировку программы?