Ошибка с синусом! Помогите пожалуйста!
program calculator;
uses crt;
label beg,znak,mem,okr;
var a,b,m:real;i,y,r,n:integer;c,o,f,h:char;cos,sin,tan:string;
begin
okr:writeln(Округлять ответ? Если да введите 2, иначе 1.);
readln(o);
while not((o=1)or(o=2))do begin
writeln(Неправильное значение. Введите правильное.);
readln(o);
end;
if o=2then begin
writeln(До скольки знаков после запятой округлять?);
readln(n);
end;
if c=n then goto znak;
mem:writeln(|//////////////ПАМЯТКА:Cначала вводите первое число,потом знак,потом по необходимости второе число(Калькулятор зациклен,можно вводить знак и второе число много раз),Всегда читайте заданный программой вопрос прежде чем вводить!);
writeln(|Доступные знаки:+,-,*,/,cos,sin,tan; а также:1-корень,2-степень,3-остаток от деления,c-поменять знак числа,n-опции округления результата,r-округление числа,t-отбрасывание дробной части,a-ввод первого числа заново,b-вызвать памятку,0-конец программы:ПАМЯТКА|);
if c=b then goto znak;
beg:writeln(Первое число?);
readln(a);
znak:
for i:=0 to 999999999 do begin
writeln(Знак?);
readln(c);
if c=n then goto okr;
if c=0 then break;
if c=a then goto beg;
if c=b then goto mem;
while not(c in[+,-,*,/,1,2,3,r,t,c,sin,cos,tan])do begin
writeln(Знак не поддерживается! Введите правильный знак!);
readln(c);
end;
if c=cthen a:=-a;
if c=rthen a:=round(a);
if c=tthen a:=trunc(a);
if c in[1,2]then begin
if c=2then begin
writeln(В какую степень возвеcти желаете?);
readln(m);
a:=power(a,m);
end
else a:=sqrt(a)
end;
if c in[sin,cos,tan]then begin
writeln(Радианы(r)или градусы(g)? Введите пожалуйста);
readln(h);
if c=sin then begin
if h=r then a:=sin(a);
if h=g then a:=sin(a*pi/180)
end;
if c=cos then begin
if h=r then a:=cos(a);
if h=g then a:=cos(a*pi/180)
end;
if c=tan then begin
if h=r then a:=tan(a);
if h=g then a:=tan(a*pi/180)
end;
end;
if not(c in[r,t,c,sin,cos,tan,1,2])then begin
writeln(Второе число?);
readln(b);
if c=3then begin
while b<>trunc(b)do begin
writeln(Второе число должно быть целым! Введите заново!);
readln(b)
end;
if a<>trunc(a)then begin
writeln(Округлить a(введите r) или оставить целую часть от a(введите t)?);
readln(f);
case f of
r:a:=round(a);
t:a:=trunc(a);
end;
end;
r:=trunc(b);
y:=trunc(a);
y:=y mod r;
a:=y
end;
case c of
+:a:=a+b;
-:a:=a-b;
*:a:=a*b;
/:a:=a/b;
end;
end;
writeln([{<:ОТВЕТ:>}]);
case o of
2:writeln(=,a:0:n);
1:writeln(=,a);
end;
end;
end.
Паскаль ABC.
В строке 49(if h=r then a:={МЕСТО ОШИБКИ}sin(a);) выдает ошибку:Ожидалось имя процедуры или функции. Чем ему синус не нравится? Помогите пожалуйста!
Могу Вас обрадовать (или огорчить): программе не понравится также cos(a); и tan(a);
Вы сначала объявляете посредством
var a,b,m:real;i,y,r,n:integer;c,o,f,h:char;cos,sin,tan:string;
имена sin, cos, tan, как строки, а потом пытаетесь обратиться к ним, как к функциям, употребляя запись объявленных переменных в формате вызова функций с параметром.
Оцени ответ
