0 / 0 / 0
Регистрация: 31.10.2008
Сообщений: 4
1

Определить, являются ли эти числа длинами сторон треугольника

31.10.2008, 20:56. Показов 11594. Ответов 12
Метки нет (Все метки)

помогите пожалуйста решить задачу:

Вводятся тройки чисел. Определить, являются ли эти числа длинами сторон треугольника , а если являются, то какого? Программа завершает работу, если первое число равно 999.

программу необходимо написать на паскале..если кто поможет, буду очень благодарен, тк сам не могу(
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.10.2008, 20:56
Ответы с готовыми решениями:

Определить, являются ли числа длинами сторон треугольника
№1 "Интересный чертеж" Входной файл: z.in Выходной файл:z.out Два мальчика Петр и Иван...

Определить, могут ли числа являться длинами сторон треугольника
Во входном файле даны 3целых числа а,в,с. Определить, могут ли они являться длинами сторон...

Определить, могут ли три заданных числа являться длинами сторон прямоугольного треугольника
Задано три натуральных числа. Определить являются ли заданные числа теоремой пифагора

Введите 3 числа. Если они могут быть длинами сторон треугольника, вычислите его площадь
Введите 3 числа.Если они могут быть длинами сторон разностороннего остоугольньного...

12
Почетный модератор
64275 / 47574 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
31.10.2008, 22:25 2
Держи, товарищ. Предусмотрел вроде все случаи, если что не надо, выкинь.
Код
uses crt;
var a,b,c:integer;
function CosMax(max:integer):real; {функция определяет косинус большего угла}
var x,y:integer;
begin
CosMax:=(a*a+b*b-max*max)/(2*a*b);
end;
function MaxX(a,b,c:integer):integer; {функция определяет самую длинную сторону, против которой лежит самый большой угол}
var max:integer;
begin
if (a>b)and(b>c)then max:=a
else if (b>a)and(b>c)then max:=b
else if (c>a)and(c>b)then max:=c;
MaxX:=max;
end;
begin {начало программы}
clrscr;
repeat {цикл повторений, пока не выполнится условие}
writeln('Vvedite 3 chisla:');
readln(a);
readln(b);
readln(c);
if (a+b<=c)or(a+c<=b)or(b+c<=a)then writeln('Это не треугольник!')   {если одна из сторон больше двух других}
else if (a=b)and(b=c)then writeln('Это равносторонний треугольник!') {все стороны равны}
else if ((a=b)and(b<>c))or((a=c)and(b<>c))or((b=c)and(a<>c))  {две стороны равны}
then writeln('Это равнобедренный треугольник!')
else if CosMax(MaxX(a,b,c))>0 then writeln('Это остроугольный треугольник!') {если косинус угла против большей стороны > 0}
else if CosMax(MaxX(a,b,c))<0 then writeln('Это тупоугольный треугольник!')  {< 0}
else if CosMax(MaxX(a,b,c))=0 then writeln('Это прямоугольный треугольник!');  {= 0}
until a=999;
readln
end.
1
0 / 0 / 0
Регистрация: 31.10.2008
Сообщений: 4
31.10.2008, 22:27  [ТС] 3
а разве начало не такое должно быть?
Код
program ...;
uses crt;
var
a, s , k ,q: integer;
begin
clr scr;
k:=0; s:=0; q:=0;
repeat
write('введите число')
readln (A)
if A <>999 then
просто я такие вещи, как function MaxX, function CosMax(max:integer):real; {функция определяет косинус большего угла} даже не проходил ещё..
0
Почетный модератор
64275 / 47574 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
31.10.2008, 22:41 4
Если тебе не надо определять остроугольный, или тупоугольный, или прямоугольный, это можно убрать. Если надо, то без косинуса большего угла, зная только длины сторон, это не определишь. По поводу ввода. Если написать как у тебя, т.е сразу определять А, то после этого надо писать, а если не 999, то есть писать лишний код. Как у меня ты вводишь тройки чисел, пока не надоест, потом вводишь 999 и еще 2 любых числа, программа сообщает о треугольнике и завершает работу.
0
0 / 0 / 0
Регистрация: 31.10.2008
Сообщений: 4
31.10.2008, 22:45  [ТС] 5
ну а как сделать, чтобы Программа завершала работу, если первое число равно 999.?
0
(Yellow_Duck)
1261 / 130 / 15
Регистрация: 16.10.2008
Сообщений: 733
31.10.2008, 22:45 6
fuction - отгугли модульное программирование функции
0
Почетный модератор
64275 / 47574 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
31.10.2008, 22:53 7
Вот облегченный вариант.
Код
uses crt;
var a,b,c:integer;
begin
clrscr;
repeat
writeln('Vvedite 3 chisla:');
readln(a);
readln(b);
readln(c);
if (a+b<=c)or(a+c<=b)or(b+c<=a)then
writeln('Это не треугольник!')
else if (a=b)and(b=c)then writeln('Это равносторонний треугольник!')
else if ((a=b)and(b<>c))or((a=c)and(b<>c))or((b=c)and(a<>c))
then writeln('Это равнобедренный треугольник!')
else writeln('Это разносторонний треугольник!');
until a=999;
readln
end.
1
0 / 0 / 0
Регистрация: 31.10.2008
Сообщений: 4
31.10.2008, 23:36  [ТС] 8
Цитата Сообщение от Puporev Посмотреть сообщение
Вот облегченный вариант.
Код
uses crt;
var a,b,c:integer;
begin
clrscr;
repeat
writeln('Vvedite 3 chisla:');
readln(a);
readln(b);
readln(c);
if (a+b<=c)or(a+c<=b)or(b+c<=a)then
writeln('Это не треугольник!')
else if (a=b)and(b=c)then writeln('Это равносторонний треугольник!')
else if ((a=b)and(b<>c))or((a=c)and(b<>c))or((b=c)and(a<>c))
then writeln('Это равнобедренный треугольник!')
else writeln('Это разносторонний треугольник!');
until a=999;
readln
end.
так тоже подходит, но как сделать, чтобы программа заканчивалась, если первое число равно 0?
0
Почетный модератор
64275 / 47574 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
31.10.2008, 23:40 9
Проверять уже поздно, думаю так:
Код
writeln('Vvedite 3 chisla:');
readln(a);
if a=0 then halt;
Сейчас спроси, а если b=0?
0
(Yellow_Duck)
1261 / 130 / 15
Регистрация: 16.10.2008
Сообщений: 733
31.10.2008, 23:47 10
А как быть если b=0????? o_O
0
monteo
19.03.2009, 22:45 11
привет всем, вот похожая задачка. Какой вид будет иметь программа?
Проверить, каким является треугольник – равносторонним, равнобедренным или разносторонним (вводя длины сторон)
Почетный модератор
64275 / 47574 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
19.03.2009, 22:54 12
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
program tip;
uses crt;
var x,y,z: real;
begin
clrscr;
write ('x= ');readln (x);
write ('y= ');readln (y);
write ('z= ');readln (z);
if (x+y<=z) or (x+z<=y) or (y+z<=x) then
   begin
    writeln ('treugolnik ne sushestvuet');
    readln;
    halt;
   end
else if (x=y)and(y=z) then
write('Treugolnik ravnostoronnyj!')
else if((x=y)and(x<>z))or((x=z)and(x<>y))or((y=z)and(x<>y))
then write('Treugolnik ravnobedrennyj!')
else write('Treugolnik raznostoronnyj!');
readln
end.
0
0 / 0 / 2
Регистрация: 17.09.2013
Сообщений: 56
22.12.2013, 13:42 13
Цитата Сообщение от Puporev Посмотреть сообщение
Держи, товарищ. Предусмотрел вроде все случаи, если что не надо, выкинь.
Код
uses crt;
var a,b,c:integer;
function CosMax(max:integer):real; {функция определяет косинус большего угла}
var x,y:integer;
begin
CosMax:=(a*a+b*b-max*max)/(2*a*b);
end;
function MaxX(a,b,c:integer):integer; {функция определяет самую длинную сторону, против которой лежит самый большой угол}
var max:integer;
begin
if (a>b)and(b>c)then max:=a
else if (b>a)and(b>c)then max:=b
else if (c>a)and(c>b)then max:=c;
MaxX:=max;
end;
begin {начало программы}
clrscr;
repeat {цикл повторений, пока не выполнится условие}
writeln('Vvedite 3 chisla:');
readln(a);
readln(b);
readln(c);
if (a+b<=c)or(a+c<=b)or(b+c<=a)then writeln('Это не треугольник!')   {если одна из сторон больше двух других}
else if (a=b)and(b=c)then writeln('Это равносторонний треугольник!') {все стороны равны}
else if ((a=b)and(b<>c))or((a=c)and(b<>c))or((b=c)and(a<>c))  {две стороны равны}
then writeln('Это равнобедренный треугольник!')
else if CosMax(MaxX(a,b,c))>0 then writeln('Это остроугольный треугольник!') {если косинус угла против большей стороны > 0}
else if CosMax(MaxX(a,b,c))<0 then writeln('Это тупоугольный треугольник!')  {< 0}
else if CosMax(MaxX(a,b,c))=0 then writeln('Это прямоугольный треугольник!');  {= 0}
until a=999;
readln
end.
Подскажи, а ты сам пишешь описание функций (то что в красных скобках), или есть какой-то софт ?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.12.2013, 13:42
Помогаю со студенческими работами здесь

На плоскости задан треугольник длинами своих сторон, найти наименьший из углов треугольника
Прошу помогите написать программу в паскале, не пойму как ее делать. На плоскости задан...

Три треугольника заданы длинами своих сторон. Определите, какой из них имеет наибольшую площадь
Три треугольника заданы длинами своих сторон. Определите, какой из них имеет наибольшую площадь....

Даны три длины сторон треугольник. Найти медианы треугольника, сторонами которого являются медианы исходного треугольника
Даны три длины a,b,c сторон некторого треугольник. Найти медианы треугольника, сторонами которого...

Определить, являются ли эти числа равными или все они не меньше заданного А
Помогите пожалуйста! Завтра зачёт... 1) Даны n целых чисел. Определить, являются ли эти числа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru