Корректность функции - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Мне нужно чтобы не в процедуре проверялся ввод данных а в функции, как это сделать ?

Решение задачи: «Корректность функции»

textual
Листинг программы
uses crt;
function input(var a,b:real):real;
var c:real;
begin
repeat
write('Введите первую сторону: ');
readln(a);
if a<0 then  writeln('длина стороны должна быть больше 0');
until(a>0);
repeat
write('Введите вторую сторону: ');
readln(b);
if b<0 then  writeln('длина стороны должна быть больше 0');
until(b>0);
repeat
write('Введите угол между сторонами до 180 : ');
readln(c);
if c>180 then  writeln('введеный угол должен быть меньше 180°');
until(c<180);
input:=c;
end;
 
function side(a,b,c:real):real;
begin
side:=sqrt(sqr(a)+sqr(b)-2*a*b*cos(c*pi/180));
end;
 
function square(a,b,c:real):real;
begin
square:=0.5*a*b*sin(c*pi/180);
end;
 
procedure output(a,b,c:real);
begin
writeln('Третья сторона= ',side(a,b,c):0:2);
writeln('Площадь= ',square(a,b,c):0:2);
end;
 
var a,b,c:real;
begin
clrscr;
writeln('Данная программа находит 3-ью сторону и площадь треугольника по двум сторонам и углу между ними');
writeln('Введите две стороны и угол между ними ');
c:=input(a,b);
output(a,b,c);
readln;
end.

Объяснение кода листинга программы

  1. Объявлены переменные a, b, c, а также функция input, которая принимает три аргумента типа real и возвращает значение типа real.
  2. В функции input пользователю предлагается ввести значения для трех сторон треугольника, пока они не будут корректными (больше 0).
  3. Затем объявлены функции side и square, которые вычисляют длину третьей стороны треугольника и его площадь соответственно.
  4. В процедуре output вызываются эти функции, и их результаты выводятся на экран.
  5. Затем пользователю предлагается ввести значения для a, b и c, и если они корректны, то вызывается функция output.
  6. В конце программы вызывается readln, чтобы программа не закрылась раньше времени.

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы