IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Является ли решение задачи рациональным?
Extraneo
сообщение 17.07.2012 14:06
Сообщение #1





Группа: Пользователи
Сообщений: 2
Пол: Мужской
Реальное имя: Влад

Репутация: -  0  +


Текст задачи такой:
Цитата
Запросить стороны треугольника и определить, является ли он разносторонним, равнобедренным или равносторонним. Учесть условие : третья сторона не должна превышать сумму двух других, иначе треугольник не существует.

я немного усложнил условие и ввел возможность определения прямоугольного треугольника.
Рационально ли написана программа или можно упростить код? я новичок, и у меня есть привычка все усложнять.
uses
crt;
var
a,b,c: integer;
begin
clrscr;
writeln ('Vvedite dliny storon treugolnika ');
readln (a,b,c);
if (a=b) and (b=c)
then
writeln ('Treugolnik ravnostoronniy ')
else
if ((a=b) or (b=c) or (a=c)) and ((a<(b+c)) and (b<(a+c)) and (c<(a+b)))
then
writeln ('Treugolnik ravnobedrenniy ')
else
if ((a<>b) and (a<>c) and (b<>c)) and ((a<(b+c)) and (b<(a+c)) and (c<(a+b))) and not ((sqr(a)+sqr(b)=sqr©) or (sqr(b)+sqr©=sqr(a)) or (sqr(a)+sqr©=sqr(b)))
then
writeln ('Treugolnik raznostoronniy ')
else
if (sqr(a)+sqr(b)=sqr©) or (sqr(b)+sqr©=sqr(a)) or (sqr(a)+sqr©=sqr(b))
then
writeln ('Treugolnik prjamougolniy ')
else
writeln ('Dannogo treugolnika ne sushestvuet ');
readln;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 18.07.2012 9:16
Сообщение #2


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Ну я бы существование треугольника проверил первый делом.
Если if стоит сразу после else, то между ними не надо делать перенос и лишний отступ, потому что получается такая лесенка.
Условие
sqr(a)+sqr(b)=sqr©) or (sqr(b)+sqr©=sqr(a)) or (sqr(a)+sqr©=sqr(b) я бы вычислил заранее и сохранил в отдельную булевскую переменную.

(a=b) or (b=c) or (a=c) - тоже вычислил бы отдельно, тогда будет проще определять равнобедренные прямоугольные треугольники.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
romku
сообщение 1.08.2012 16:20
Сообщение #3





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Роман

Репутация: -  0  +


Не хочу навязывать свое решение, но я сделал так:

var
a,b,c: integer;
begin
writeln('Введите стороны треугольника');
readln(a,b,c);
write('Треугольник ');
if (a<=(b+c)) and (b<=(a+c)) and (c<=(a+b)) then
begin
if (a=b) or (b=c) or (a=c) then
begin
if (a=b) and (b=c) then writeln('равносторонний')
else writeln('равнобедренный ');
end
else
if (sqr(a)+sqr(b)=sqr©) or (sqr(b)+sqr©=sqr(a)) or (sqr(a)+sqr©=sqr(b)) then writeln('прямоугольный')
else writeln('разносторонний');
end
else writeln('не существует');
end.



Прикрепленные файлы
Прикрепленный файл  triangle.pas ( 625 байт ) Кол-во скачиваний: 170
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.07.2025 18:25
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"