Консультация № 76732
21.02.2007, 11:39
0.00 руб.
0 2 2
Написать фрагмент программы, который распечатывает таблицу A(MxN) по спирали против часовой стрелки, начиная с правого верхнего угла

Обсуждение

Неизвестный
21.02.2007, 14:56
общий
это ответ
Здравствуйте, Wansdy!
Первый цикл по номеру диагонали
Второй цикл по номеру элемента на диагонали
Внутри цикла персчитать первых два номера на координаты элемента в массиве
Неизвестный
21.02.2007, 18:31
общий
это ответ
Здравствуйте, Wansdy!

Алгоритм обхода по спирали смотрите в приложении. Здесь элементы просто выводятся на экран в порядке хода спирали.

Приложение:
ti:= 0; tj:= n-1; {шаги обхода}el:= 1; {счётчик количества элементов}i:= 1; j:= n+1; {индексы массива}While tj>=0 do {условие завершения обхода}Begin dec (j); While j>=(n-tj) do Begin writeln (a[i,j]); {вместо writeln можно вставить} dec (j); {любые действия с элементом} inc (el); End; inc (j); inc (i); While i<=(m-ti) do Begin writeln (a[i,j]); inc (el); inc (i); End; dec (i); inc (j); While (j<=(tj+1)) and (el<=n*m) do Begin writeln (a[i,j]); inc (j); inc (el); End;dec (j); dec (i); while (i>=(ti+2)) and (el<=n*m) do {дополнительно} Begin {проверяем, не закончились ли элементы} writeln (a[i,j]); dec (i); inc (el); End; inc (i); inc (ti); dec (tj); {изменение шага}End;
Форма ответа