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

UptoLike

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

181
Пример 11.32. Сформировать двумерный массив n·n указанного вида для
произвольного n. Для n=4 формируемый массив имеет вид
1 0 0 0
2 1 0 0
3 2 1 0
4 3 2 1.
Решение. Заметим, что каждая строка начинается с элемента, значение которого
совпадает с номером строки. Затем оно уменьшается с ростом номера столбца. Все
элементы, лежащие выше главной диагонали, равны нулю. Отсюда легко
догадаться, что в теле циклов перебора повторяется оператор a[i,j]:=i-j+1. Для
перебора строк и столбцов используем вложенные циклы.
for i:=1 to n do
for j:=1 to n do
if i<=j
then a[i,j]:=i-j+1
else a[i,j]:=0.
Упражнение. Воспользовавшись формулой n-i+1, получите на основе
предыдущего решения массив вида
4 0 0 0
3 4 0 0
2 3 4 0
1 2 3 4.
Пример 11.33. Сформировать двумерный массив n·n указанного вида для
произвольного n. Для n=4 формируемый массив имеет вид
0 0 0 4
0 0 4 3
0 4 3 2
4 3 2 1.
Решение. Можно заметить, что все элементы, расположенные выше побочной
диагонали, равны нулю, а расположенные ниже связаны с индексами
соотношением 2·n-(i+j)+1. Соответствующий фрагмент программы имеет вид
for i:=1 to n do
for j:=1 to n do
if i+j>=n+1
then a[i,j]:=2*n-(i+j)+1
else a[i,j]:=0.
Упражнения:
1. Постройте фрагменты программ для формирования массивов:
1 2 3 4 1 2 3 4 1 2 3 4
0 1 2 3 2 3 4 0 2 3 4 1
0 0 1 2 3 4 0 0 3 4 1 2
0 0 0 1 4 0 0 0 4 1 2 3.
2. Придумайте аналогичные виды массивов и постройте для них программы.
Попробуйте сформулировать алгоритм решения таких задач.
Пример 11.34. Сформировать двумерный массив n·n указанного вида для
произвольного n. Для n=4 формируемый массив имеет вид
                                     181

   Пример 11.32. Сформировать двумерный массив n·n указанного вида для
произвольного n. Для n=4 формируемый массив имеет вид
      1000
      2100
      3210
      4 3 2 1.
   Решение. Заметим, что каждая строка начинается с элемента, значение которого
совпадает с номером строки. Затем оно уменьшается с ростом номера столбца. Все
элементы, лежащие выше главной диагонали, равны нулю. Отсюда легко
догадаться, что в теле циклов перебора повторяется оператор a[i,j]:=i-j+1. Для
перебора строк и столбцов используем вложенные циклы.
   for i:=1 to n do
      for j:=1 to n do
              if i<=j
              then a[i,j]:=i-j+1
              else a[i,j]:=0.
   Упражнение. Воспользовавшись формулой n-i+1, получите на основе
предыдущего решения массив вида
      4000
      3400
      2340
      1 2 3 4.
   Пример 11.33. Сформировать двумерный массив n·n указанного вида для
произвольного n. Для n=4 формируемый массив имеет вид
      0004
      0043
      0432
      4 3 2 1.
   Решение. Можно заметить, что все элементы, расположенные выше побочной
диагонали, равны нулю, а расположенные ниже связаны с индексами
соотношением 2·n-(i+j)+1. Соответствующий фрагмент программы имеет вид
   for i:=1 to n do
      for j:=1 to n do
              if i+j>=n+1
              then a[i,j]:=2*n-(i+j)+1
              else a[i,j]:=0.
   Упражнения:
   1. Постройте фрагменты программ для формирования массивов:
       1 2 3 4                 1 2 3 4      1 2 3 4
       0 1 2 3                 2 3 4 0      2 3 4 1
       0 0 1 2                 3 4 0 0      3 4 1 2
       0 0 0 1                 4 0 0 0      4 1 2 3.
   2. Придумайте аналогичные виды массивов и постройте для них программы.
Попробуйте сформулировать алгоритм решения таких задач.
   Пример 11.34. Сформировать двумерный массив n·n указанного вида для
произвольного n. Для n=4 формируемый массив имеет вид