Показать сообщение отдельно
  #4  
Старый 26.09.2010, 23:37
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Тоже добавлю свое решение 4 задачки:
Код:
procedure TForm5.Button1Click(Sender: TObject);
Type
  TDirection = (dRight, dDown, dLeft, dTop);
Var
  Count, i, Col, Row: Integer;
  Direction: TDirection;
begin
 Count := MatrixSize.Value * MatrixSize.Value;
 Direction := dRight;
 Col := 0; Row := 0;
 for i := 1 to Count
 do begin
    Matrix.Cells[Col, Row] := IntToStr(i);
    case Direction of
      dRight: if (Col + 1 = MatrixSize.Value) or (Matrix.Cells[Col + 1, Row] <> '')
              then begin
                   Direction := dDown;
                   Inc(Row);
                   end
              else Inc(Col);
      dDown:  if (Row + 1 = MatrixSize.Value) or (Matrix.Cells[Col, Row + 1] <> '')
              then begin
                   Direction := dLeft;
                   Dec(Col);
                   end
              else Inc(Row);
      dLeft:  if (Col = 0) or (Matrix.Cells[Col - 1, Row] <> '')
              then begin
                   Direction := dTop;
                   Dec(Row);
                   end
              else Dec(Col);
      dTop:   if (Row = 0) or (Matrix.Cells[Col, Row - 1] <> '')
              then begin
                   Direction := dRight;
                   Inc(Col);
                   end
              else Dec(Row);
    end;
 end;
end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием