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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2012, 22:01   #1
Юля_0990
 
Регистрация: 19.02.2012
Сообщений: 9
По умолчанию программа с прцедурой

ПОМОГИТЕ ПОЖАЛУЙСТА!!!
Написать в паскале программу. Задача: Найти периметр треугольника, заданного координатами своих вершин. В программе использовать процедуру.
Юля_0990 вне форума Ответить с цитированием
Старый 19.02.2012, 22:15   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Легко... Только расскажи хотя бы на словах как математически находится периметр треугольника.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.02.2012, 15:41   #3
Юля_0990
 
Регистрация: 19.02.2012
Сообщений: 9
По умолчанию

периметр- это сложение длин всех сторон треугольника...а одна сторона треугольника заданного координатами своих вершин находится по формуле
L=sqrt(sqr(x2-x1)+sqr(y2-y1))
Юля_0990 вне форума Ответить с цитированием
Старый 20.02.2012, 15:46   #4
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
По умолчанию

Цитата:
Сообщение от Юля_0990 Посмотреть сообщение
периметр- это сложение длин всех сторон треугольника...а одна сторона треугольника заданного координатами своих вершин находится по формуле
L=sqrt(sqr(x2-x1)+sqr(y2-y1))
Код:

Function GetS(x1,y1,x2,y2,x3,y3:integer):integer;  // Периметр
var
  x1,y1,x2,y2,x3,y3:integer;
  r3,r1,r2:integer;
begin
 r1:=Round(sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)));
 r2:=Round(sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));
 r3:=Round(sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3)));
 result:=r1+r2+r3;
end;
полностью прогу могу в delphi написать но завтра.
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype
denisbrain вне форума Ответить с цитированием
Старый 20.02.2012, 15:51   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Юля, ну вы же сами на свой вопрос и ответили.
вводите координаты трёх вершин.
вычисляете расстояния между ними (форумулу Вы абсолютно правильно привели).
суммируете полученные расстояния.
Это и есть требуемая величина периметра.

что вызывает сложности?!

p.s. справедливости ради, надо сказать, что не для любых трёх точек можно построить треугольник. Задача имеет решение только если все три точки не лежат на одной прямой. Это легко проверить (длина самой большой стороны меньше, чем сумма двух других сторон), но, раз в задаче сказано, что данные точки представляют собой вершины треугольника, то факт существования этого треугольника можно и не проверять!

ДОБАВЛЕНО
ну вот, пока собирался написать, denisbrain меня уже опередил.

denisbrain, вот только округлять длины сторон, имхо, совсем излишне!
нормально получить длины - вещественные числа и полученный периметр - тоже вещественное число.
Никто в задаче не говорил, что длины сторон и периметер имеют целочисленные значения!!

ну и ещё.
в TurboPascal для хранения координат удобно использовать либо тип PointType (описан в модуле Graph),
или описать свой пользовательский тип данных, например:
type point=record
x,y: integer;
end;
ну а если задача решается в Delphi, то использовать встроенный тип данных TPoint

Последний раз редактировалось Serge_Bliznykov; 20.02.2012 в 15:58.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.02.2012, 15:54   #6
Юля_0990
 
Регистрация: 19.02.2012
Сообщений: 9
По умолчанию

denisbrain спасибо БОЛЬШОЕ!! но мне нужна программа не с функцией а с процедурой...
Если сможете напишите пожалуйста всю программу для Pascal...Serge_Bliznykov может вы сможете мне помочь?

Последний раз редактировалось Юля_0990; 20.02.2012 в 16:26.
Юля_0990 вне форума Ответить с цитированием
Старый 20.02.2012, 20:04   #7
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

раз надо с процедурой - пожалуйста:

Код:
procedure CalcS(x1,y1,x2,y2,x3,y3:integer);  // Периметр
var
  S, r3,r1,r2:integer;
begin
 r1:=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
 r2:=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
 r3:=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));
 S:=r1+r2+r3; {куда девать значение периметра решайте сами}
end;
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 21.02.2012, 11:36   #8
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
По умолчанию

Код:
var
   x1,y1,x2,y2,x3,y3:integer;
   s:real;
procedure CalcS(x1,y1,x2,y2,x3,y3:integer;var s:real);  // Периметр
var
   r3,r1,r2:real;
begin
 r1:=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
 r2:=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
 r3:=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));
 S:=r1+r2+r3; {куда девать значение периметра решайте сами}
end;

begin
 writeln('Введите координаты точки  A');
 write('X=');read(x1);write('Y=');read(y1);
 writeln('Введите координаты точки  B');
 write('X=');read(x2);write('Y=');read(y2);
 writeln('Введите координаты точки  C');
 write('X=');read(x3);write('Y=');read(y3);
 CalcS(x1,y1,x2,y2,x3,y3,s);
 Writeln('Периметр треугольника равен  ',s);

end.
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype

Последний раз редактировалось denisbrain; 21.02.2012 в 11:42.
denisbrain вне форума Ответить с цитированием
Старый 21.02.2012, 12:27   #9
Юля_0990
 
Регистрация: 19.02.2012
Сообщений: 9
По умолчанию

ЕЕХХХЕЕЕУУУУ =)))) ВСЕМ БОЛЬШОЕ СПАСИБО!!!! ВЫ МНЕ ОЧЕНЬ ПОМОГЛИ )))
А можно ли эту программу немножко подкорректировать так, чтобы в процедуре считалась только одна сторона....а вычисление периметра перешла в основную часть программы? если можно напишите пожалуйста...

Последний раз редактировалось Юля_0990; 21.02.2012 в 18:23.
Юля_0990 вне форума Ответить с цитированием
Старый 22.02.2012, 08:37   #10
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
По умолчанию

Цитата:
Сообщение от Юля_0990 Посмотреть сообщение
ЕЕХХХЕЕЕУУУУ =)))) ВСЕМ БОЛЬШОЕ СПАСИБО!!!! ВЫ МНЕ ОЧЕНЬ ПОМОГЛИ )))
А можно ли эту программу немножко подкорректировать так, чтобы в процедуре считалась только одна сторона....а вычисление периметра перешла в основную часть программы? если можно напишите пожалуйста...

Код:

var
   x1,y1,x2,y2,x3,y3:integer;
   s:real;
Procedure Dlina(x1,y1,x2,y2:integer;var d:real);
begin
   d:=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
end;
procedure CalcS(x1,y1,x2,y2,x3,y3:integer;var s:real);  // Периметр
var
   r3,r1,r2:real;
begin
 Dlina(x1,y1,x3,y3,r1);
 Dlina(x1,y1,x2,y2,r2);
 Dlina(x2,y2,x3,y3,r3);
{ r1:=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
 r2:=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
 r3:=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));}
 S:=r1+r2+r3; {куда девать значение периметра решайте сами}
end;

begin
 writeln('Введите координаты точки  A');
 write('X=');read(x1);write('Y=');read(y1);
 writeln('Введите координаты точки  B');
 write('X=');read(x2);write('Y=');read(y2);
 writeln('Введите координаты точки  C');
 write('X=');read(x3);write('Y=');read(y3);
 CalcS(x1,y1,x2,y2,x3,y3,s);
 Writeln('Периметр треугольника равен  ',s);

end.
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype
denisbrain вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа с применением записей и программа с применение множеств smert99 Помощь студентам 0 16.06.2011 23:14
Программа открыается если есть другая программа. bookkc Паскаль, Turbo Pascal, PascalABC.NET 12 14.10.2009 20:09
[PASCAL]Программа создания файла, программа обработки файла Виколяшка Фриланс 7 23.09.2009 17:38
Программа создания файла, программа обработки файла [PASCAL] Виколяшка Помощь студентам 1 22.09.2009 22:56