Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача на нахождение площади треугольника

Автор: Merlin 27.10.2005 3:28

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

Код

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 27.10.2005 3:54

Merlin,

Цитата
Введите три числа. Если они могут быть сторонами равностороннего треугольника, то найдите его периметр и площадь.
А ты что делаешь? Ждешь ввода трех чисел, которые точно будут сторонами равностороннего треугольника. Так не пойдет ...

Автор: Merlin 27.10.2005 4:21

Это надо делать через " IF"

Автор: klem4 27.10.2005 10:44

Ну так и сделай. IF стороны у треугольника рывны THEN считаем площадь.
Ты это имел в виду ? Ну а ввести наверняка, чтобы это был равносторонний можно например вот так :

repeat
readln(a,b,c);
until (a=b)and(b=c);


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


Автор: volvo 27.10.2005 13:07

To: klem4
Опять не пойдет... Внимательно читай задание...
Вот так надо:

writeln(' Ввод A, B, C: ');
readln( A, B, C );
if ( A = B ) and ( A = C ) then {ищем периметр и площадь...}

Автор: klem4 27.10.2005 19:02

Ну ведь я так и написал :

Цитата(klem4)
IF стороны у треугольника рывны THEN считаем площадь.


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

Автор: Merlin 8.11.2005 0:27

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



Подскажите почему вылезает ошибка, может я в операторе (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 8.11.2005 0:35

Цитата
может я в операторе (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 8.11.2005 1:45

Спасибо за всю помощь, вроде со всеми задачами справился... good.gif

Автор: Гость 15.01.2007 17:19

найти площадь и периметр равностороннего треугольника, если известна одна из его длин?

Автор: klem4 15.01.2007 17:53

blink.gif

P = 3 * длина стороны
S = длина стороны в квадрате умножить на квадратный корень из 3 и всё разделить на 4.