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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2011, 19:26   #1
Viwwna
Пользователь
 
Аватар для Viwwna
 
Регистрация: 18.11.2011
Сообщений: 33
Вопрос Даны координаты n точек на плоскости. Найти номера двух точек, расстояние между которыми наибольшее.

Даны координаты n точек на плоскости x1, y1 ,..., xn, yn. Найти номера двух точек, расстояние между которыми наибольшее (считать, что такая пара точек единственная).


Код:
program Max_distance;
{Программа вводит номера двух точек, расстояние между которыми наибольшее.}
var z: array[1..n] of record
    x, y: real
  end;
  r, d: extended;
  i, j, n, z1, z2: integer;
begin
  write('Введите количество точек: ');
  Readln(n);
  for i := 1 to n do
  begin
    write('Координаты ', i, ' точки (x y): ');
    Readln(z[i].x, z[i].y)
  end;
  r := 0;
  for i := 1 to n - 1 do
    for j := i + 1 to n do
    begin
      d := sqrt((z[i].x - z[j].x) * (z[i].x - z[j].x) + (z[i].y - z[j].y) * (z[i].y - z[j].y));
      if d > r then
      begin
        r := d;
        z1 := i;
        z2 := j
      end
    end;
  writeln('Наибольшее расстояние между точками ', z1, ' и ', z2)
end.

НУЖНО НЕ ОГРАНИЧИВАТЬ N ТОЧЕК МАССИВОМ. НО КАК ЭТО СДЕЛАТЬ? ПРОСТИТЕ Я СТУДЕНТКА ПЕРВОГО КУРСА... ЕЩЕ МНОГОЕ НЕ ПОНИМАЮ... ЗАРАНЕЕ СПАСИБО...
Тех, кто презирает программистов, программисты презирают сильнее, чем те, кто презирает программистов, презирающих программистов, которые презирают тех, кто их презирает.

Последний раз редактировалось Serge_Bliznykov; 13.12.2013 в 11:19. Причина: отформатировал код программы
Viwwna вне форума Ответить с цитированием
Старый 19.11.2011, 00:57   #2
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Зависит от того, каким именно образом "не ограничивать", ведь конец-то этих точек должен кода-то настать?
т.е. уточните задачу у преподавателя, как именно должен заканчиваться ввод массива точек.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 19.11.2011, 06:33   #3
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Я полагаю, дело совсем не в том...
Viwwna, вот это слова твоего преподавателя?
Цитата:
Сообщение от Viwwna Посмотреть сообщение
НУЖНО НЕ ОГРАНИЧИВАТЬ N ТОЧЕК МАССИВОМ.
- да? Я боюсь, ты просто не так его поняла. Он хотел сказать, что у тебя количество точек вводится с клавиатуры в переменную n, а ТАКЖЕ у тебя константа (не заданная) n используется как длина массива при его объявлении. Это - НЕЛЬЗЯ по правилам языка Pascal. Такая программа не скомпилируется вообще.

Выходов может быть несколько.
Первый (и самый правильный, думаю) - сделать динамический массив и задавать его дину после ввода n. Но что-то мне подсказывает, что вы динамические массивы еще не проходили, так что я не буду подробно останавливаться на этом.
Второй (тоже довольно правильный) - разместить фиксированный массив в динамической памяти. Но мне кажется, вы до этого тоже еще не дошли..
Третий - это использовать статический массив, заданный с избытком. Именно его используют обычно в начале обучения, и его я тебе и рекомендую применить. Для этого сначала объявляем КОНСТАНТУ m и даем ей значение, которое заведомо превышает все n, которые будет вводить пользователь. То есть, например, заранее известно, что количество вводимых чисел не превысит 1000. Тогда пишем:
Код:
Program Max_distance;
{Программа вводит номера двух точек, расстояние между которыми наибольшее.}
const
  m= 1000;  // тут задаем консту m
var
  z:Array [1..m] of record   // тут m вместо n
    x,y:real
  end;
  n: integer;   // вот эта строка задает переменную n
  r,d:extended;
.......  // дальше все как было
Дальше прогу я не смотрел. Если усть еще вопросы - задавай )).
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дано два множества точек.Найти пересечение и разность этих множеств.Координаты точек X и Y вводить с клав Degster Паскаль, Turbo Pascal, PascalABC.NET 0 15.05.2011 18:32
Наибольшее расстояние между парой точек. C++ LaDark Помощь студентам 3 02.11.2010 10:34
Найти номера пары точек, расстояние между которыми наибольшее evgenext Помощь студентам 1 02.07.2010 22:46
Паскаль*Найти расстояние между двумя заданными множе-ствами точек tipson Помощь студентам 2 11.07.2009 12:19
Найти номера пары точек, расстояние между которыми наибольшее Nevis Помощь студентам 5 21.06.2009 23:37