Ошибка с синусом! ! 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='2'then 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='c'then a: =-a; if c='r'then a: =round(a); if c='t'then a: =trunc(a); if c in['1','2']then begin if c='2'then 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='3'then 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); ) выдает ошибку: ожидалось имя процедуры или функции. чем ему синус не нравится? !
Вы сначала объявляете посредством
var a,b,m:real;i,y,r,n:integer;c,o,f,h:char;cos,sin,tan:string;
имена sin, cos, tan, как строки, а потом пытаетесь обратиться к ним, как к функциям, употребляя запись объявленных переменных в формате вызова функций с параметром.