Помогите решить несколько задачек на паскале!!!! PLEEEEEEEEASE!!!!

Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

&quot писал(а):Все-таи, "исключительный период" - от 11 до 14, а не до 13 (а то получим в результате текст: 'Возраст составляет 14 года').
Вы правы. согласен. Проколололся... ;-)
Henaro
Сообщения: 4
Зарегистрирован: 20 мар 2009, 14:15

Serge_Bliznykov писал(а):Black89,

решение:

Код: Выделить всё

const
  MaxArray = 7;
type 
  MyArrayType = array [1..MaxArray, 1..MaxArray] of integer; 
  
procedure Spiral(var M : MyArrayType); 
var 
  k, MaxStep, PosX, PosY : integer;
  i: integer;
BEGIN
  i := 1;
  PosX := 1;
  PosY := 0;
  MaxStep := MaxArray;

  while i <= MaxArray*MaxArray do
  begin
    {движение вправо}
    for k:=1 to MaxStep do
    begin
      Inc(PosY);
      M[PosX, PosY] := i;
      Inc(i);
    end;
    Dec(MaxStep);
    {движение вниз по спирали}
    for k:=1 to MaxStep do 
    begin     
      Inc(PosX);
      M[PosX, PosY] := i;
      Inc(i);
    end;
    {движение влево по спирали}
    for k:=1 to MaxStep do 
    begin     
      Dec(PosY);
      M[PosX, PosY] := i;
      Inc(i);
    end;
    Dec(MaxStep);
    {движение вверх по спирали}
    for k:=1 to MaxStep do 
    begin     
      Dec(PosX);
      M[PosX, PosY] := i;
      Inc(i);
    end;      
  end;
end;

var
  Matrix : MyArrayType;
  i, j   : integer;

BEGIN
  Spiral(Matrix);
  for i:=1 to MaxArray do
    begin
      for j:=1 to MaxArray do
        Write(Matrix[i,j]:4);
      WriteLn;
    end;
END.
Подскажите, в чем ошибка этого алгоритма, если например вместо матрицы порядка 7, будет матрица порядка 88. Не корректно строится она при таком значение.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Нет ошибок. Нормально строит. Просто на экране не помещается.
Ответить