Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2013, 23:19   #1
getredtm
Новичок
Джуниор
 
Регистрация: 30.06.2013
Сообщений: 2
По умолчанию Даны координаты точек n на плоскости. Найти номера двух точек, расстояние между которыми наибольшее.

Здравствуйте. Помогите пожалуйста с задачей. Мне нужно описать процедуру, а я понятия не имею как это делать(((
Сама задача: Даны координаты n точек на плоскости x1,y1,...,xn,yn (n=20). Найти номера двух точек, расстояние между которыми наибольшее (считать, что такая пара точек единственная). Описать процедуру.
Код:
Program POints;
const NMax=20;
var x,y:array[1..NMax] of double; ii,jj,Na,Nb: integer;
  RMax,Rast: double;
begin randomize;
  writeln('     Таблица координат');
  writeln('№':4,'  X  ':8,'   Y   ':8 );
  for ii:=1 to NMax do
    begin
      X[ii]:= (random - 0.5)*200;
      Y[ii]:= (random - 0.5)*200;
      writeln(ii:4,X[ii]:8:2,Y[ii]:8:2);
    end;
  RMax:= 0;
  for ii:=1 to NMax do
    for jj:=ii+1 to NMax do
      begin
        Rast:= sqrt(sqr(X[ii]-X[jj])+sqr(Y[ii]-Y[jj]));
        if (ii=1) and (jj=2) then RMax:=Rast;
        if Rast >= RMax then
          begin
            RMax:= Rast; Na:=ii; Nb:=jj;
            write('+')
          end else write('-');
        writeln(ii:4,jj:4,Rast:8:3);
      end;
   writeln('---- Результат: ------ ');
   writeln('Макс.расстояние = ',RMax:8:3,' точки: ',Na:3,' и ',Nb);
   readln;
end.
getredtm вне форума Ответить с цитированием
Старый 01.07.2013, 00:20   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

ну, вполне себе рабочий код. (за исключением не совсем понятного вывода плюсиков и минусиков в цикле)
Вы эту программу сами написали?
Тогда в чём проблема описать процедуру?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.07.2013, 00:23   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Например, ...
Код:
Program POints;
const NMax=20;
type Tmas = array[1..NMax, 1..NMax] of real;
Procedure MaxDist(XY : Tmas; var i, j : integer);
{процедура возвращает только номера точек}
{между которыми максимальное расстояние}
var m, n : integer;
     a, max : real;
begin
   max := sqr(XY[1,1] - XY[2,1]) + sqr(XY[1,2] - XY[2,2]);
   i := 1; j := 2;
   for m := 1 to NMax - 1 do
      for n := m + 1 to NMax do begin
         a := sqr(XY[m,1] - XY[n,1]) + sqr(XY[m,2] - XY[n,2]);
         if a > max then begin
            max := a;
            i := m; j := n;
         end;
     end;
end;

var mas : Tmas;
     ii, jj : integer;
begin
  randomize;
  writeln('     Таблица координат');
  writeln('№':4,'  X  ':8,'   Y   ':8 );
  for ii:=1 to NMax do
    begin
      mas[ii,1]:= (random - 0.5)*200;
      mas[ii,2]:= (random - 0.5)*200;
      writeln(ii:4,mas[ii,1]:8:2,mas[ii,2]:8:2);
    end;
   MaxDist(mas, ii, jj);
   writeln('Макс.расстояние между точками: ', ii:3,' и ',jj:3);
   readln;
end.

Не проверял на компиляцию.

Но... Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 01.07.2013, 01:47   #4
getredtm
Новичок
Джуниор
 
Регистрация: 30.06.2013
Сообщений: 2
По умолчанию

Я вообще не знаю просто что такое процедура(((

ViktorR, мне ее надо просто написать от руки, препод на экзамене так смотрит(((

Спасибо, приду после экзамена, напишу результат!

Последний раз редактировалось Stilet; 01.07.2013 в 08:28.
getredtm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны координаты n точек на плоскости. Найти номера двух точек, расстояние между которыми наибольшее. Viwwna Паскаль, Turbo Pascal, PascalABC.NET 2 19.11.2011 06:33
дано два множества точек.Найти пересечение и разность этих множеств.Координаты точек X и Y вводить с клав Degster Паскаль, Turbo Pascal, PascalABC.NET 1 23.05.2011 16:35
Наибольшее расстояние между парой точек. C++ LaDark Помощь студентам 3 02.11.2010 10:34
Найти номера пары точек, расстояние между которыми наибольшее evgenext Помощь студентам 1 02.07.2010 22:46
Найти номера пары точек, расстояние между которыми наибольшее Nevis Помощь студентам 5 21.06.2009 23:37