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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2010, 21:17   #1
Mishka-01
Новичок
Джуниор
 
Регистрация: 21.09.2010
Сообщений: 2
По умолчанию Pascal

Всем привет, помогите исправить и найти ошибки. Программа выдает не те результаты=)
Код:
program kma;
const e=0.0001;
var x1,y1,x2,y2,x3,y3,a,b,c,a1,b1,c1,k,cosA,cosB,cosC,tgA,tgB,tgC,uA,uB,uC:real;
    F,P:text;N,i:byte;S:string;
begin
x1:=0;x2:=0;x3:=0;y1:=0;y2:=0;y3:=0;a:=0;b:=0;c:=0;k:=0;cosA:=0;cosB:=0;
cosC:=0;tgA:=0;tgB:=0;tgC:=0;uA:=0;uB:=0;uC:=0;N:=0;i:=0;a1:=0;b1:=0;c1:=0;

   assign(F,'Tests.txt');   assign(P,'TestsRes.txt');
   reset(F);
   readln(F,N);
for i:=1 to N do
begin
   Append(P);
   readln(F,x1,y1,x2,y2,x3,y3);
   a:=sqrt(sqr(x1-x2)+sqr(y1-y2));
   b:=sqrt(sqr(x2-x3)+sqr(y2-y3));
   c:=sqrt(sqr(x3-x1)+sqr(y3-y1));
   a1:=a;b1:=b;c1:=c;
   if a1>b1 then begin k:=a1;a1:=b1;b1:=k;end;
   if b1>c1 then begin k:=b1;b1:=c1;c1:=k;end;
   if a1>c1 then begin k:=a1;a1:=c1;c1:=k;end;
   if (abs(c1-a1-b1))<e then writeln(P,'Treugolnika ne sushestvuet')
   else begin

   cosA:=(sqr(c)+sqr(b)-sqr(a))/(2*b*c);
   cosB:=(sqr(a)+sqr(c)-sqr(b))/(2*a*c);
   cosC:=(sqr(a)+sqr(b)-sqr(c))/(2*a*b);

   if abs(cosA)<e then uA:=90
   else if cosA<-e then uA:=-1
   else tgA:=sqrt((1/sqr(cosA))-1);

   if abs(cosB)<e then uB:=90
   else if cosB<-e then uB:=-1
   else tgB:=sqrt((1/sqr(cosB))-1);

   if abs(cosC)<e then uC:=90
   else if cosC<-e then uC:=-1
   else tgC:=sqrt((1/sqr(cosC))-1);

   if (uA<>90) and (uA<>-1) then uA:=Arctan(tgA)*57.29577;
   if (uB<>90) and (uB<>-1) then uB:=Arctan(tgB)*57.29577;
   if (uC<>90) and (uC<>-1) then uC:=ArcTan(tgC)*57.29577;
   if uA=-1 then uA:=180-uB-uC;
   if uB=-1 then uB:=180-uA-uC;
   if uC=-1 then uA:=180-uA-uB;

   if (abs(a-b)<e) and (abs(b-c)<e) and (abs(c-a)<e) then S:='Ravnostoronnii'
      else if (abs(a-b)<e) or (abs(b-c)<e) or (abs(c-a)<e) then S:='Ravnobedrennii'
      else S:='Raznostoronnii';

writeln(P,'a=',a:0:5,' ','b=',b:0:5,' ','c=',c:0:5,' ',S,' ','Ugol A=',uA:0:5,' ','Ugol B=',uB:0:5,' ','Ugol C=',uC:0:5);
end;end;
close(F);
close(P);
end.

Последний раз редактировалось Stilet; 22.09.2010 в 08:43.
Mishka-01 вне форума Ответить с цитированием
Старый 22.09.2010, 08:43   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А что она должна считать?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.09.2010, 13:41   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

по заданным координатам 3-х точек нужно определить возможно ли, что эти точки являются вершинами треугольника, если невозможно - выдать текст "Треугольника не существует"
если же треугольник возможен - определить является ли он равносторонним, равнобедренным или разносторонним.

p.s. код написан жутко, поэтому править его нет никакого желания. Да и задача эта уже в форуме решалась. Надо только в поиск сходить...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Turbo Pascal or Pascal ABC Ikram Паскаль, Turbo Pascal, PascalABC.NET 0 27.04.2010 13:44
Pascal nes@ Помощь студентам 3 23.02.2010 17:14
а free pascal не читает задачи которые написаны на turbo pascal? demonara Паскаль, Turbo Pascal, PascalABC.NET 3 25.05.2009 16:28
Перевод кода из Pascal в Object Pascal zemskov77 Общие вопросы Delphi 1 03.01.2009 09:37