Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 18.11.2011, 19:26   #1
Viwwna
Пользователь
 
Аватар для Viwwna
 
Регистрация: 18.11.2011
Адрес: Назарово, Красноярский край
Сообщений: 33
Репутация: 10

icq: 466455664
skype: viwwna
Вопрос Даны координаты 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,589
Репутация: 1842
По умолчанию

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

Я полагаю, дело совсем не в том...
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 вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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




07:22.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru