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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2010, 19:48   #1
crocodile
Новичок
Джуниор
 
Регистрация: 14.12.2009
Сообщений: 2
Вопрос Упростить код (Паскаль)

как можо упростить первую часть?
program Project1;

{$APPTYPE CONSOLE}
type
point =
record
x,y,dist2:integer;
end;

function getDist(a:point; b:point):integer;
begin
getDist:=(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);
end;

var
n,i,j,maxD, maxI, maxJ, tmp: integer;
pts: array of point;

begin
writeln('N:');
readln(n);
SetLength(pts, n);

writeln('Vvodite koordinati tochek cheres probel, a tochki chereze enter');

for i := 0 to n-1 do
Readln(pts[i].x, pts[i].y);

maxI:=0;
maxJ:=1;
maxD:=getDist(pts[0], pts[1]);
for i := 0 to n-2 do
for j := i+1 to n-1 do
begin
tmp:=getDist(pts[i], pts[j]);
if tmp>maxD then
begin
maxI:=i;
maxJ:=j;
maxD:=tmp;
end;
end;

writeln;
Writeln(pts[maxI].x, ' ', pts[maxi].y);
Writeln(pts[maxJ].x, ' ', pts[maxJ].y);
readln;
end.

Последний раз редактировалось crocodile; 26.01.2010 в 17:59.
crocodile вне форума Ответить с цитированием
Старый 26.01.2010, 17:58   #2
crocodile
Новичок
Джуниор
 
Регистрация: 14.12.2009
Сообщений: 2
По умолчанию

Можно ли проще сделать не объяляя тип координат, а используя одни переменные???
crocodile вне форума Ответить с цитированием
Старый 26.01.2010, 22:22   #3
CodeExpert
Заблокирован
 
Регистрация: 30.10.2009
Сообщений: 468
По умолчанию

Можно бы было, но так ведь удобнее, и учитесь оформлять код правильно:
Код:
program Project1;

{$APPTYPE CONSOLE}
type point = record
   x,y,dist2:integer;
end;

function getDist(a:point; b:point):integer;
begin
  getDist:=(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);
end;

var
  n,i,j,maxD, maxI, maxJ, tmp: integer;
  pts: array of point;
begin
writeln('N:');
readln(n);
SetLength(pts, n);
writeln('Vvodite koordinati tochek cheres probel, a tochki chereze enter');
for i := 0 to n-1 do
  Readln(pts[i].x, pts[i].y);
  maxI:=0;maxJ:=1;
maxD:=getDist(pts[0], pts[1]);
for i := 0 to n-2 do
  for j := i+1 to n-1 do
    begin
      tmp:=getDist(pts[i], pts[j]);
        if tmp>maxD then
          begin
            maxI:=i;
            maxJ:=j;
            maxD:=tmp;
            end;
      end;
writeln;
Writeln(pts[maxI].x, ' ', pts[maxi].y);
Writeln(pts[maxJ].x, ' ', pts[maxJ].y);
readln;
end.
CodeExpert вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный массив(Паскаль). Упростить код AnL Помощь студентам 1 17.12.2009 01:37
помогите упростить код serafim09 Microsoft Office Excel 9 14.10.2009 15:01
Помогите упростить код Ralf_ru Помощь студентам 7 01.04.2009 17:17