Показать сообщение отдельно
  #3  
Старый 14.12.2007, 07:59
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Код:
program PointDistance;

{$APPTYPE CONSOLE}

uses
  Windows, SysUtils, Math;

type
  TPoint = record
    X, Y: Integer;
  end;

const
  NUM_POINTS = 4;  // Количество точек

  Points: Array [0..NUM_POINTS - 1] of TPoint = (
    (X:00; Y:02),
    (X:04; Y:02),
    (X:02; Y:01),
    (X:00; Y:00)
  );

//------------------------------------------------------------------------------
// Вывод на экран строки
//------------------------------------------------------------------------------
procedure WriteStr(S: String);
var
  Dst: Array [0..255] Of Char;
begin
  AnsiToOem(PChar(S), Dst);
  Writeln(Dst);
end;

//------------------------------------------------------------------------------
// Форматирование целого значения для вывода на экран
//------------------------------------------------------------------------------
function FmtInt(X:Integer): String;
begin
  Result := Format('%3d', [X]);
end;

//------------------------------------------------------------------------------
// Форматирование вещественного значения для вывода на экран
//------------------------------------------------------------------------------
function FmtDbl(X:Double): String;
begin
  Result := Format('%5.2f', [X]);
end;

//------------------------------------------------------------------------------
// Вычисление расстояния между двумя точками в позициях I и J
//------------------------------------------------------------------------------
function CalcDistance(I, J: Integer): Double;
begin
  Result := Sqrt(Sqr(Points[i].X - Points[J].X) + Sqr(Points[i].Y - Points[J].Y));
end;

var
  Distance  : Array [0..NUM_POINTS - 1, 0..NUM_POINTS - 2] Of Double;
  i1, i2, J : Integer;
begin
  for i1 := 0 to NUM_POINTS - 1 do begin
    J := 0;
    Write(FmtInt(i1) + ') ');

    for i2 := 0 to NUM_POINTS - 1 do
      if i2 <> i1 then begin
        Distance[i1, J] := CalcDistance(i1, i2);
        Write(FmtInt(i2) + ':' + FmtDbl(Distance[i1, J]));

        Inc(J);
      end;
    Writeln;
  end;

  Writeln;
  WriteStr('Нажмите Enter.');
  Readln;
end.
Ответить с цитированием