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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2010, 18:46   #1
Сергей33
Пользователь
 
Регистрация: 04.05.2010
Сообщений: 15
Печаль Тупоугольный треугольник

Помогите доделать задачу
Пусть даны координаты трех точек на плоскости. Если они могут быть вершинами тупоугольного треугольника, вычислите его площадь. Выведите длины сторон в порядке убывания.
uses crt;
function Dlina(x1,y1,x2,y2:real):real;
begin
Dlina:=sqrt(sqr(x1-x2)+sqr(y1-y2));
end;
procedure DlinySt(a,b,c:real;var mx,mn,sr:real);
begin
mx:=a;
if b>mx then mx:=b;
if c>mx then mx:=c;
mn:=a;
if b<mn then mn:=b;
if c<mn then mn:=c;
sr:=a+b+c-mx-mn;
end;
function Plosh(a,b,c:real):real;
var p:real;
begin
p:=(a+b+c)/2;
Plosh:=sqrt(p*(p-a)*(p-b)*(p-c));
end;
var x1,y1,x2,y2,x3,y3,a,b,c,mx,mn,sr:re al;
begin
clrscr;
repeat
writeln('Введите координаты вершин треугольника:');
writeln('1->');
readln(x1,y1);
writeln('2->');
readln(x2,y2);
writeln('3->');
readln(x3,y3);
a:=Dlina(x1,y1,x2,y2);
b:=Dlina(x1,y1,x3,y3);
c:=Dlina(x3,y3,x2,y2);
if (abs(a-b)>=c) or (a+b<=c) then
writeln('Это не треугольник! Повторите ввод.');
until (abs(a-b)<c)and(a+b>c);
DlinySt(a,b,c,mx,mn,sr);
if mn*mn+sr*sr<mx*mx then
begin
writeln('Это тупоугольный треугольник!');
writeln('Его стороны в порядке убывания ',mx:0:2,' ',sr:0:2,' ',mn:0:2);
writeln('Его площадь=',Plosh(a,b,c):0:2);
end
else write('Это не тупоугольный треугольник!');
readln
end.
Тут когда вводиш координаты тупоугольного треугольника она вылетает или пишет что это не тупогольный треугольник почемуто
Помогите пожалуйста!
Сергей33 вне форума Ответить с цитированием
Старый 04.05.2010, 19:18   #2
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Код:
a:=sqrt(sqr(x2-x1)+sqr(y2-y1));
     b:=sqrt(sqr(x3-x2)+sqr(y3-y2));
     c:=sqrt(sqr(x1-x3)+sqr(y1-y3));
Вот формулы нахождения длины каждой стороны треугольника.И почитайте геометрию.Ну там например теорему Пифагора.Откроете много интересного для себя и тогда и только тогда когда вы это прочтёте то поймёте что "ваша" программа работает верно.
にんじゃ

Последний раз редактировалось ROMA2PVT; 04.05.2010 в 19:21.
ROMA2PVT вне форума Ответить с цитированием
Старый 04.05.2010, 19:24   #3
Сергей33
Пользователь
 
Регистрация: 04.05.2010
Сообщений: 15
По умолчанию

КА же она работает верно если когда вводиш координаты например:
1
1

5
3

7
1
она пишет что это не тупоугольый треугольник
Сергей33 вне форума Ответить с цитированием
Старый 04.05.2010, 19:28   #4
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

С этими координатами выдаст что это тупоугольный треугольник.Но не как это не тупоугольый треугольник
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 04.05.2010, 19:48   #5
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Код:
Program treug;
uses crt;
var a,b,c,mx,mn,sr,y1,y2,y3,x1,x2,x3,p,Plosh:real;
begin
     clrscr;
     write('Введите координаты сторон через пробел: ');
     readln(x1,y1);
     readln(x2,y2);
     readln(x3,y3);
     a:=sqrt(sqr(x2-x1)+sqr(y2-y1));
     b:=sqrt(sqr(x3-x2)+sqr(y3-y2));
     c:=sqrt(sqr(x1-x3)+sqr(y1-y3));
if (a+b<=c)or(a+c<=b)or(b+c<=a)then
 begin
  writeln('Это не треугольник!');
  readln;
  exit;
 end;
    begin
     mx:=a;
    if b>mx then mx:=b;
    if c>mx then mx:=c;
     mn:=a;
     if b<mn then mn:=b;
     if c<mn then mn:=c;
      sr:=a+b+c-mx-mn;
    end;
 p:=(a+b+c)/2;
Plosh:=sqrt(p*(p-a)*(p-b)*(p-c));
if{(a<>b)and(a<>c)and(b<>c) and}(mn*mn+sr*sr<mx*mx)then
 begin
  writeln('Это разносторонний тупоугольный треугольник!');
  writeln('Его стороны в порядке возрастания ',mx,' ',sr,' ',mn);
  writeln('Его площадь=',Plosh:0:2);
 end
else write('Это не разносторонний тупоугольный треугольник!');
readkey;
end.
Так попробуй.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 04.05.2010, 19:53   #6
Сергей33
Пользователь
 
Регистрация: 04.05.2010
Сообщений: 15
По умолчанию

спасибо попробую
Сергей33 вне форума Ответить с цитированием
Старый 04.05.2010, 20:32   #7
Сергей33
Пользователь
 
Регистрация: 04.05.2010
Сообщений: 15
По умолчанию

спасибо вроде всё работает
Сергей33 вне форума Ответить с цитированием
Старый 04.05.2010, 20:36   #8
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Ну вот.Только и та всё прекрасно вычисляет.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Треугольник в VBA FullmetalAlchemist Microsoft Office Excel 3 27.04.2010 13:44
доказать формулой(жел-но в градусах) Равнобедренный тупоугольный треугольник ahtung Microsoft Office Excel 20 24.12.2008 11:44
Треугольник serega11 Помощь студентам 2 22.05.2008 09:01