Показать сообщение отдельно
Старый 16.02.2012, 10:51   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от vitaref Посмотреть сообщение
Первую решил.
В принципе - правильно, но есть несколько замечаний.
Лучше бы убрать переменную t вовсе, а просто в условных операторах выдавать сообщения. То есть так:
Код:
var
 a,b,c:real;
begin
 writeln('vvedite storony treugolnika',a,b,c);
 readln (a,b,c);
 if (a+b<=c) or  (b+c<=a) or (a+c<=b) then 
  writeln('treugolnik ne suwestvuet') else 
  writeln('treugolnik suwestvuet');
 if ((a=b) and (b=c)) then 
  writeln('treugolnik ravnostoronnyy') else
 if (a=b) or (b=c) or (a=c) then 
  writeln('treugolnik ravnobedrennyy');
 if (a*a=b*b+c*c) or (b*b=a*a+c*c)  or (c*c=a*a+b*b) then 
  writeln('treugolnik pryamougolnyy');
 readln
end.
Связано это с тем, что у Вас в программе переменная t может принимать значение только одного из вариантов строки, между тем как треугольник может оказаться одновременно и равнобедренным, и прямоугольным (с углами 45-90-45), и тогда в предложенном мной варианте появятся обе надписи.
Кроме того, в проверке существования корректнее дать нестрогие неравенства. Ну в самом деле, если сумма двух сторон равна третьей, то что это за треугольник?
И последнее. В операторе останова readln перед заключительным end скобки можно не ставить. Не ошибка, можно и так, как у Вас, но не нужно.
Vladimir_S вне форума  
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070