Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pascal_учебник_3.doc
Скачиваний:
33
Добавлен:
11.04.2015
Размер:
937.47 Кб
Скачать

6.4. Работа с двухмерными массивами.

Вложенные циклы

Задания

№1. Дана матрица A(4,6). Напечатать элемент, стоящий на пересеченииnстроки иmстолбца.

Примечание. Как же осуществить ввод двухмерного массива? Двухмерный массив - это матрица. Введем сначала первую строку этой матрицы. Элементы первой строки:

а11 а12 а13 . . . a16 .

В ней первый индекс у элементов - постоянный - равен 1 (номеру строки), а второй - изменяется от 1 до 6 («пробегает» все столбцы первой строки). Следовательно, надо организовать цикл по столбцам (j), чтобы ввести всю первую строку матрицы:

for j:=1 to 6 do

read(a[1,j]);

Но строк у нас 4. Следовательно, первый индекс тоже должен «пробежать» все свои значения от 1 до 4, чтобы можно было ввести все строки матрицы:

for i:=1 to 4 do

for j:=1 to 6 do

read(a[i,j]);

При i=1 введем все элементы первой строки. Потом i станет равно 2, и мы введем все элементы второй строки. И т.д., пока не введем всю матрицу.

Процедура read позволяет нам вводить числа как через пробел (и не один!), так и через <Enter>. Поэтому, организовав такой ввод, мы можем вводить матрицу в привычном для нас виде, например:

3 5 7 -8 4 100

-3 4 1 0 3 5

0 0 1 -1 2 –6

4 6 1 0 4 1.5

Таким образом можно ввести любую матрицу. Советуем Вам ввод матрицы выделить в рамочку, как это сделано выше, и хорошо запомнить!

№2. Дано: матрица А(5,3); Х. ЕслиХ>0, то элементы четвертой строки матрицы увеличить в два раза.

Примечание. Вывод матрицы аналогичен вводу. Если мы напишем, например, так:

for i:=1 to 5 do

for j:=1 to 3 do

writeLN(a[i,j])

то матрица будет выводиться по строкам (т.е. при i=1 (1 строка) j «пробегает» все значения от 1 до 3 (все столбцы) и т.д.), но вывод элементов этой матрицы будет осуществлен в столбик (по одному элементу в строке экрана), т.к. стоит LN. Если убрать LN, т.е. написать просто WRITE, то элементы будут выводиться в строку (пока позволит длина строки экрана). Как же сделать, чтобы они выводились в виде матрицы? То есть нам надо, чтобы машина вывела одну строку матрицы, а затем выполнить перевод курсора на следующую строку, чтобы новая строка матрицы выводи­лась с новой строки. Перевод на новую строку у нас должен осуществляться во внешнем цикле (по i). Следовательно, после вывода одной строки (т.е. после отработки цикла по j) надо поставить WRITELN. Тогда операторы, осуществляющие вывод матрицы (цикл), приобретают следующий вид:

for i:=1 to 5 do

for j:=1 to 3 do

write(a[i,j]);

writeln

Но это еще не все. Последний оператор (WRITELN) стоит за телом циклов и, следовательно, будет выполняться один раз. А нам надо, чтобы перевод строки (WRITELN) стоял во внешнем цикле. Значит, раз нам надо выполнить более одного оператора в цикле, мы эти операторы должны заключить в операторные скобки:

for i:=1 to 5 do

begin

for j:=1 to 3 do

write(a[i,j]);

writeln

end

Если мы организуем такой вывод в программе, то результат получим, например, в следующем виде:

-5.4189222353E+01 1.5933608403E+00 2.6595828123E+00

-6.4226175728E+01-4.9656302622E+01-5.6398568978E+01

1.4007135108E+01 2.1996811428E+01-5.6369144702E+01

-5.3711999441E+00-3.9245778788E+01-4.2954834620E+01

-5.8254164038E+01-1.8887273339E+01-1.9566185586E+01

Как мы видим, в строках между значениями практически нет пропусков. Это не очень удобно. Если мы используем формат для вывода результатов, то мы получим более удобочитаемый вид. Например, следующий вывод:

for i:=1 to 5 do

Begin

for j:=1 to 3 do

write(a[i,j]:10:2);

writeln

end

нам даст уже такой вид выводимой информации:

-80.00 -76.86 6.10

-59.74 -52.71 -12.83

-48.13 -63.82 -42.78

-37.43 -71.80 -32.52

-72.94 4.09 -74.03

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

№3. Определить сумму элементов шестой строки матрицы А(10,11).

№4. Дана матрица А(10,4).Вывести на печать минимальный элемент восьмой строки.

№5. Дана матрица А(12,5).Определить векторВ, каждый элемент которого может быть получен как сумма соответствующих элементов первого и последнего столбцов.

№6. Переставить местами элементы второго и четвертого столбцов в матрице С(10,10).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]