Задана последовательность прямых линий. Определить прямую, близлежащую к данной точке — Pascal(Паскаль)

Program PascalGuru;

uses crt;

type
  priamye = record
    A: real;
    B: real;
    C: real;
    r: real;
  end;

var
  x, y: real;
  pr: array [1 .. 26] of priamye; { vsego 26 priamyx }
  i, n, min: integer;

begin
  write('Skoliko priamyx budete vvoditi: ');
  readln(n);

  for i := 1 to n do
  begin
    clrscr;
    writeln('Vvedite dannye uravneniua ', i, '-oy priamoy:');
    writeln;
    write('A', i, ': ');
    readln(pr[i].A);
    write('B', i, ': ');
    readln(pr[i].B);
    write('C', i, ': ');
    readln(pr[i].C);
  end;

  clrscr;
  writeln('Zadany ', n, ' posledovatelinostei: ');
  i := 0;
  repeat
    inc(i);
    writeln('A', i, ':', pr[i].A: 0: 2, '; ', 'B', i, ':', pr[i].B: 0: 2, '; ',
      'C', i, ':', pr[i].C: 0: 2, ';');
  until i = n;

  writeln;
  writeln('Vvedite koordinaty tociki:');
  write('x: ');
  readln(x);
  write('y: ');
  readln(y);

  { *************вычисление минимального расстояния**************** }
  i := 0;
  while (i < n) do
  begin
    inc(i);
    pr[i].r := abs((pr[i].A * x) + (pr[i].B * y) + pr[i].C) /
      sqrt((pr[i].A * pr[i].A) + (pr[i].B * pr[i].B));
  end;

  clrscr;
  writeln('RASTOIANIYA ot tociki s koordinatami: ', x:0:2, ',', y:0:2, ':');
  writeln;
  for i := 1 to n do
    writeln('Rastoianie do ', i, ' priamoy: ', pr[i].r:0:2);
  { min: }
  min := 1;
  for i := 2 to n do
    if pr[i].r < pr[min].r then
      min := i;
  writeln;
  writeln('Pryamaya, blizlezhaschaya k zadannoi tochke: ', min,
    ' --- s rastoyaniem= ', pr[min].r:0:2);

  { ------------конец вычисления минимального расстояния---------- }

  readln;

end.

Leave a Comment

+ 88 = 98