Есть код ** паскале, который считает выражение и запрещает ввод букв. Нужно сделать...

0 голосов

Есть код на паскале, который считает выражение и запрещает ввод букв. Нужно сделать проверку знаменателя на 0 обоих выражений, и вывести текст в случае нуля

PascalABC

program aip;
var
fltA,fltB,fltB2:real;
code:integer;
function ip(A:real):real;
var A1:string;
begin
write('Введите значение А= ');


//--------
repeat
readln(A1);
val(A1,A,code);
if (code<>0) then writeln('no');
until (A>0);
//-------
ip:=A;
end;
begin
fltA:=ip(fltA);
fltB:= ((1-2*sin(fltA)*sin(fltA))/(1+sin(2*fltA)));
fltB2:= ((1-tan(fltA))/(1+tan(fltA)));
writeln('Первая формула ',fltB:5:5);
writeln('Вторая формула ',fltB2:5:5);
end.


спросил от (18 баллов) в категории Информатика
1 Ответ
0 голосов
ответил от Одаренный (3.3k баллов)

PascalABC

program aip;
var 
fltA,fltB,fltB2:real;
code:integer;
function ip(A:real):real;
var A1:string;
begin
write('Введите значение А= ');


//--------
repeat 
readln(A1);
val(A1,A,code);
if (code<>0) then writeln('no');
until (A>0);
//-------
ip:=A;
end; 
begin 
fltA:=ip(fltA);
if abs(1+sin(2*fltA)) < 0.000001 then begin
   writeln('Delenie na nol v pervoy formule');
end else begin
   fltB:= ((1-2*sin(fltA)*sin(fltA))/(1+sin(2*fltA)));
   writeln('Первая формула ',fltB:5:5);
end;
if abs(1+tan(fltA)) < 0.000001 then begin
   writeln('Delenie na nol vo vtoroy formulte');
end else begin
   fltB2:= ((1-tan(fltA))/(1+tan(fltA)));
   writeln('Вторая формула ',fltB2:5:5); 
end;
end. 

оставил комментарий от (18 баллов)

Либо как-то запретить ввод этих переменных

оставил комментарий от Одаренный (3.3k баллов)

тогда вначале надо будет градусы первести в радианы

оставил комментарий от Одаренный (3.3k баллов)

а потом уже вычислять значения функций

оставил комментарий от (18 баллов)

как это реализовать? Буду благодарен

оставил комментарий от Одаренный (3.3k баллов)

либо попробуй исправления жирным

оставил комментарий от (18 баллов)

Считает все равно, нужно перевод сделать

оставил комментарий от Одаренный (3.3k баллов)

ip:=A; замените на ip:=A*3.14/180; вместо 3,14 можете взять более точное значение числа pi

оставил комментарий от (18 баллов)

Не работает :(

оставил комментарий от (18 баллов)

Делит все равно

оставил комментарий от (18 баллов)

Нужно сделать что бы он в градусной мере принимал значения

...