Корректность функции - 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.
Объяснение кода листинга программы
- Объявлены переменные a, b, c, а также функция input, которая принимает три аргумента типа real и возвращает значение типа real.
- В функции input пользователю предлагается ввести значения для трех сторон треугольника, пока они не будут корректными (больше 0).
- Затем объявлены функции side и square, которые вычисляют длину третьей стороны треугольника и его площадь соответственно.
- В процедуре output вызываются эти функции, и их результаты выводятся на экран.
- Затем пользователю предлагается ввести значения для a, b и c, и если они корректны, то вызывается функция output.
- В конце программы вызывается readln, чтобы программа не закрылась раньше времени.