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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2011, 23:37   #1
niktim
Пользователь
 
Регистрация: 13.11.2011
Сообщений: 18
По умолчанию Максимальная диагональ многоугольника (Паскаль)

Условие: Дан выпуклый многоугольник, найти самую длинную диагональ н-угольника.
Код:
uses crt;
const n_max=10;
type TC=array [1..n_max] of integer;
 procedure Input (var x,y:TC; var n:integer);
var i:integer;
begin
  repeat
  write('Vvedite kolichestvo vershin ot 4 do ',n_max,' n=');
  readln(n);
  if not(n in [4..n_max])then writeln('Oshibka! Povtorite vvod');
  until n in [4..n_max];
  for i:=1 to n do
    begin
      writeln('Vvedite koordinaty(x,y) vershiny ',i);
      readln(x[i],y[i]);
      writeln;
    end;
end;

var
    x,y:TC;
    i,j,n,imx,jmx:integer;
    d_max,d:real;
 
begin
  Input(x,y,n);
  d_max:=0;
  imx:=1;
  jmx:=3;
  for j:=3 to n-1 do  //смотрим первую вершину, от 3 до предпоследней
   begin
     d:=sqrt(sqr(x[j]-x[1])+sqr(y[j]-y[1]));
     if d>d_max then
       begin
        d_max:=d;
        jmx:=j;
       end;
   end;
  for i:=2 to n-2 do //остальные вершины от i+2 до последней
  for j:=i+2 to n do
   begin
    d:=sqrt(sqr(x[j]-x[i])+sqr(y[j]-y[i]));
    if d>d_max then
      begin
       d_max:=d;
       imx:=i;
       jmx:=j;
      end;
   end;
  writeln('Samaya dlinnaya diagonal ',imx,' - ',jmx,' = ',d_max:2:1);
  readln;
end.
но ведь многоугольником считается так же и треугольники, но тогда по формуле n*(n-3)/2, в треугольнике совершненно нет диагоналей - абсурд?
Или я неправильно понимаю условие?
niktim вне форума Ответить с цитированием
Старый 16.11.2011, 23:43   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Диагональ соединяет две не прилежащие к одной стороне вершины. Таких у треугольника нет.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.11.2011, 23:51   #3
niktim
Пользователь
 
Регистрация: 13.11.2011
Сообщений: 18
По умолчанию

Благодарю, соответственно задача решена правильно (не считая оптимизации)?
niktim вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рисование многоугольника в C# vandrouny C# (си шарп) 3 11.10.2010 23:30
Побочная диагональ BaronVik Паскаль, Turbo Pascal, PascalABC.NET 3 28.04.2010 09:47
Главная диагональ Айдар Помощь студентам 4 09.04.2010 16:34
Диагональ матрицы Pecherni Общие вопросы C/C++ 2 16.03.2009 17:47
Диагональ монитора. Levsha100 Помощь студентам 3 08.12.2008 23:52