Четверг, 09.01.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 1 из 1
  • 1
Модератор форума: Seqular, Pavel  

ПОМОГИТЕ ПЛИЗ
F1XERДата: Воскресенье, 15.06.2008, 00:45 | Сообщение # 1
Знакомый
Группа: Пользователи
Сообщений: 18
Репутация: 0
Замечания: 0%
Статус: Offline
Задача: Расположить числа в матрице по спирали.

Есть решение, но на зачёте объяснить не смогу, помогите разобраться!

Program Matrix;
uses crt;
Const n=7;
type flag=(Left,Right,Up,Down);
var fl: flag;
y,u,x,i,j:integer;
mas:array [1..n+2] of array[1..n+2] of integer;
Procedure Zapolnenie;
Begin
For j:=1 to n+2 do
For i:=1 to n+2 do
mas[i][j]:=-1;
For j:=2 to n+1 do
For i:=2 to n+1 do
mas[i][j]:=0;

End;
Procedure Vivod;
Begin
For j:=2 to n+1 do begin
For i:=2 to n+1 do
Write(mas[i][j],' | ');

WriteLn('');
End;
End;
Procedure Move;
Begin
Case fl of
Left: while mas[i-1][j]=0 do begin mas[i][j]:=u;i:=i-1;u:=u+1;End;
Up:while mas[i][j-1]=0 do begin mas[i][j]:=u;j:=j-1;u:=u+1;End;
Right:while mas[i+1][j]=0 do begin mas[i][j]:=u;i:=i+1;u:=u+1;End;
Down:while mas[i][j+1]=0 do begin mas[i][j]:=u;j:=j+1;u:=u+1;End;
End;
End;
Begin
Zapolnenie;

i:=1;
j:=2;
repeat
fl:=Right;
Move;

fl:=Down;
Move;
fl:=Left;
Move;
fl:=Up;
Move;
until u=n*n;
mas[i][j]:=n*n;
Vivod;
End.

 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;