Вопросы для самопроверки

Двумерные массивы

 

Цель работы

Получение практических навыков работы с двумерными массивами.

 

Пример 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. Как в среде Турбо Паскаль выполнить трассировку программы?