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

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

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

 
 Ответить  Открыть новую тему 
> Является ли решение задачи рациональным?
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 байт ) Кол-во скачиваний: 263
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 23.12.2024 20:35
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name