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

0 голосов
63 просмотров

Есть код на паскале, который считает выражение и запрещает ввод букв. Нужно сделать проверку знаменателя на 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 баллов) | 63 просмотров
Дан 1 ответ
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);
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. 

(3.3k баллов)
0

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

0

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

0

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

0

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

0

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

0

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

0

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

0

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

0

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

0

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