Конспект лекций по программированию для начинающих. Гладков В.П. - 177 стр.

UptoLike

Составители: 

179
В случае использования этой схемы перебора при n=3 и m=2, получаем
следующий порядок ввода элементов: a[1,1], a[1,2], a[2,1], a[2,2], a[3,1], a[3,2].
Такой порядок ввода элементов называется вводом по строкам. Для ввода по
столбцам поменяем местами индексы i и j в операторе ввода. Получаем ввод
элементов по столбцам: a[1,1], a[2,1], a[3,1], a[2,1], a[2,2], a[2,3], a[3,1], a[3,2], a[3,3].
for i:=1 to n do
for j:=1 to n do
read(a[j,i]).
Упражнения:
1. Приведите другие схемы перебора, осуществляющие ввод элементов
двумерного массива по столбцам.
2. Как будут вводиться элементы двумерного массива, если в программе будут
использованы следующие операторы:
a) for i:=n downto 1 do
for j:=m downto 1 do read(a[i,j]);
б) for i:=n downto 1 do
for j:=m downto 1 do read(a[j,i]) ;
в) for i:=1 to n do
for j:=m downto 1 do read(a[i,j]);
г) for i:=n downto 1 do
for j:=1 to m do read(a[i,j]).
Рассмотрим задачу печати элементов двумерного массива по строкам и
столбцам. Задача состоит в печати стольких строк, сколько их в двумерном
массиве
. Это реализуется арифметическим циклом по количеству строк в
двумерном массиве. В теле этого цикла выполняются следующие работы: переход
к следующей печатаемой строке и вывод элементов строки (их столько сколько
столбцов). Вывод элементов строки реализуется арифметическим циклом по
количеству столбцов. Соответствующий фрагмент программы приведен ниже:
for i:=1 to n do {перебираем строки}
begin writeln;
for j:=1 to m do write(a[i,j],' ') { перебираем столбцы, каждый
элемент
отделяем от другого пробелом }
end.
Упражнения:
1. Будут ли выдавать одинаковые результаты ранее рассмотренный фрагмент
вывода двумерного массива и фрагмент, приведенный ниже? Если «да», то в каких
случаях? Если «нет», то почему?
for i:=1 to n do
begin for j:=1 to m do write(a[i,j],' ');
writeln
end.
2. Можно ли вывести двумерный массив на печать, перебирая элементы по
столбцам и сохраняя вид массива?
3. Можно ли решить задачу из упражнения 2 при выводе элементов
на экран?
Какие дополнительные операторы, отсутствующие обычно в алгоритмических
языках, нужны для решения этой задачи?
                                             179

   В случае использования этой схемы перебора при n=3 и m=2, получаем
следующий порядок ввода элементов: a[1,1], a[1,2], a[2,1], a[2,2], a[3,1], a[3,2].
Такой порядок ввода элементов называется вводом по строкам. Для ввода по
столбцам поменяем местами индексы i и j в операторе ввода. Получаем ввод
элементов по столбцам: a[1,1], a[2,1], a[3,1], a[2,1], a[2,2], a[2,3], a[3,1], a[3,2], a[3,3].
   for i:=1 to n do
       for j:=1 to n do
               read(a[j,i]).
   Упражнения:
   1. Приведите другие схемы перебора, осуществляющие ввод элементов
двумерного массива по столбцам.
   2. Как будут вводиться элементы двумерного массива, если в программе будут
использованы следующие операторы:
       a) for i:=n downto 1 do
               for j:=m downto 1 do read(a[i,j]);
       б) for i:=n downto 1 do
               for j:=m downto 1 do read(a[j,i]) ;
       в) for i:=1 to n do
               for j:=m downto 1 do read(a[i,j]);
       г) for i:=n downto 1 do
               for j:=1 to m do read(a[i,j]).
   Рассмотрим задачу печати элементов двумерного массива по строкам и
столбцам. Задача состоит в печати стольких строк, сколько их в двумерном
массиве. Это реализуется арифметическим циклом по количеству строк в
двумерном массиве. В теле этого цикла выполняются следующие работы: переход
к следующей печатаемой строке и вывод элементов строки (их столько сколько
столбцов). Вывод элементов строки реализуется арифметическим циклом по
количеству столбцов. Соответствующий фрагмент программы приведен ниже:
   for i:=1 to n do {перебираем строки}
   begin       writeln;
               for j:=1 to m do write(a[i,j],' ') { перебираем столбцы, каждый элемент
                                                         отделяем от другого пробелом }
   end.
   Упражнения:
    1. Будут ли выдавать одинаковые результаты ранее рассмотренный фрагмент
вывода двумерного массива и фрагмент, приведенный ниже? Если «да», то в каких
случаях? Если «нет», то почему?
   for i:=1 to n do
   begin       for j:=1 to m do write(a[i,j],' ');
               writeln
   end.
   2. Можно ли вывести двумерный массив на печать, перебирая элементы по
столбцам и сохраняя вид массива?
   3. Можно ли решить задачу из упражнения 2 при выводе элементов на экран?
Какие дополнительные операторы, отсутствующие обычно в алгоритмических
языках, нужны для решения этой задачи?