Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача на нахождение площади треугольника
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Merlin
Введите три числа. Если они могут быть сторонами равностороннего треугольника, то найдите его периметр и площадь.
Код

Program tr;
 var
   S,P,a,b,c,alfa: real;
begin
  repeat
write('ввод a,b');
readln(a,b);
 until (a=b) and (a>0) and (b>0);
 repeat
write('ввод c');
readln(c);
 until ( c>0) and (a=c);
 repeat
write('ввод alfa');
readln(alfa);
until(alfa>0) and (alfa<180);
  alfa:=alfa*pi/180;
P:=a+b+c;
S:=1/2*a*b*sin(alfa);
writeln('площадь треугольника S=' , S:8:3);
writeln('периметр треугльника P=' , P:8:3);
 end.
volvo
Merlin,
Цитата
Введите три числа. Если они могут быть сторонами равностороннего треугольника, то найдите его периметр и площадь.
А ты что делаешь? Ждешь ввода трех чисел, которые точно будут сторонами равностороннего треугольника. Так не пойдет ...
Merlin
Это надо делать через " IF"
klem4
Ну так и сделай. IF стороны у треугольника рывны THEN считаем площадь.
Ты это имел в виду ? Ну а ввести наверняка, чтобы это был равносторонний можно например вот так :
repeat
readln(a,b,c);
until (a=b)and(b=c);


М
А именно:
Если они могут быть сторонами равностороннего треугольника, то найдите его периметр и площадь.
Altair

volvo
To: klem4
Опять не пойдет... Внимательно читай задание...
Вот так надо:
writeln(' Ввод A, B, C: ');
readln( A, B, C );
if ( A = B ) and ( A = C ) then {ищем периметр и площадь...}
klem4
Ну ведь я так и написал :
Цитата(klem4)
IF стороны у треугольника рывны THEN считаем площадь.


а код который я привел служит для того чтобы пользователь мог ввести только такие стороны, которые бы являлись сторонами равностороннего треугольника.Может это и не нужно :p2:
Merlin
Введите три числа. Если они могут быть сторонами равностороннего треугольника, то найдите его периметр и площадь.



Подскажите почему вылезает ошибка, может я в операторе (do begin ) что то не то сделал ?


Program tr;
Var a,b,c,P,S:real;
begin
repeat
writeln('Введите три стороны треугольника');
readln(a,b,c);
until (a>0) and (b>0) and (c>0);
if (a=b) and (a=c) then do begin
writeln('Треугольник равносторонний ');
P:=a+b+c;
S:1/2*a*b*sin 60;
else writeln('Треугольник не равносторонний, повторите ввод');
writeln('площадь треугольника S=' , S:8:3);
writeln('периметр треугльника P=' , P:8:3);
end;
readln;
end.
volvo
Цитата
может я в операторе (do begin ) что то не то сделал ?

Так там вообще Do не нужно... Убери его...
if (a=b) and (a=c) then {do} begin


Кстати, у тебя структура программы нарушена... Вот так делай:
begin
repeat
writeln('Введите три стороны треугольника');
readln(a,b,c);
until (a>0) and (b>0) and (c>0);

if (a=b) and (a=c) then begin
writeln('Треугольник равносторонний ');
P:=a+b+c;
S:=1/2*a*b*sin(60);
writeln('площадь треугольника S=' , S:8:3);
writeln('периметр треугльника P=' , P:8:3);
end
else writeln('Треугольник не равносторонний, повторите ввод');

readln;
end.


Хотя я бы НЕ советовал сравнивать числа типа Real через "=" ... Можешь получить неожиданные результаты blum.gif
Merlin
Спасибо за всю помощь, вроде со всеми задачами справился... good.gif
Гость
найти площадь и периметр равностороннего треугольника, если известна одна из его длин?
klem4
blink.gif

P = 3 * длина стороны
S = длина стороны в квадрате умножить на квадратный корень из 3 и всё разделить на 4.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.