Дано натуральное число n. Необходимо расположить числа от 1 до n 2 в квадратном массиве по спирали
Категория: Delphi/Pascal
2011-08-20 14:32:05
Отсчет начать от левого верхнего угла, далее двигаться в направлении «восток-юг-запад север» и.т.д. Программа должна содержать процедуру вывода массива и процедуру заполнения массива по спирали.
code: #pascal
- Program Spiral;
- uses crt;
- const n = 6;
- type
- TMx = array[1..n,1..n] of integer;
- Procedure Print(mx : TMx);
- {Процедура вывода массива}
- var
- i,j : byte;
- begin
- writeln; writeln;
- for i := 1 to n do begin
- writeln;
- for j := 1 to n do write(mx[i,j]:2,' ');
- end;
- end;
- Procedure SpiralFill(var mx : TMx);
- {Процедура заполнения массива по спирали}
- var
- i,j,c : byte;
- begin
- i := 1;
- j := 1;
- c := 0;
- repeat
- while (j <= n - c) do
- begin
- readln(mx[i,j]); inc(j);
- end;
- {движение в направлении "запад-восток"}
- inc(i); dec(j);
- while (i <= n - c) do
- begin
- readln(mx[i,j]); inc(i);
- end;
- {движение в направлении "север-юг"}
- dec(j); dec(i);
- while (j >= 1 + c) do
- begin
- readln(mx[i,j]); dec(j);
- end;
- {движение в направлении "восток-запад"}
- inc( c ); inc(j); dec(i); {параметр с увеличился на 1}
- while (i >= 1 + c) do
- begin
- readln(mx[i,j]); dec(i);
- end;
- {движение в направлении "юг-север"}
- inc(j); inc(i);
- until c > n div 2;
- end;
- var
- m : TMx;
- begin
- clrscr;
- SpiralFill(m);
- Print(m);
- readln;
- End.
Поделиться: