Вопрос задан 19.01.2020 в 12:50. Предмет Информатика. Спрашивает Чепурко Артём.

Ошибка с синусом! Помогите пожалуйста!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 beginif 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);) выдает ошибку:Ожидалось имя процедуры или функции. Чем ему синус не нравится? Помогите пожалуйста!
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Кедышко Тарас.
Могу Вас обрадовать (или огорчить): программе не понравится также 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, как строки, а потом пытаетесь обратиться к ним, как к функциям, употребляя запись объявленных переменных в формате вызова функций с параметром.

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Я попробую помочь вам с вашей проблемой с синусом в Pascal ABC.

Ваша ошибка связана с тем, что вы используете функцию sin из модуля math, который не подключен в вашей программе. Для того, чтобы использовать тригонометрические функции, вам нужно добавить в начале программы строку uses math; Это позволит вам обращаться к функциям sin, cos, tan и другим, определенным в этом модуле.

Если вы не хотите подключать модуль math, вы можете определить свою собственную функцию sin, используя ряд Тейлора или другой способ. Например, вы можете написать такую функцию:

function sin(x: real): real; const eps = 1e-6; // точность вычислений var n: integer; // номер члена ряда term, sum: real; // текущий член и сумма ряда begin x := x mod (2 * pi); // приводим x к отрезку [0, 2*pi] n := 1; // начинаем с первого члена term := x; // первый член равен x sum := term; // сумма равна первому члену while abs(term) > eps do // пока член больше точности begin n := n + 2; // переходим к следующему нечетному номеру term := -term * x * x / (n * (n - 1)); // вычисляем следующий член sum := sum + term; // прибавляем его к сумме end; sin := sum; // возвращаем сумму как результат end;

Эта функция вычисляет синус угла в радианах с помощью ряда Тейлора. Вы можете использовать ее вместо функции sin из модуля math.

Надеюсь, это поможет вам решить вашу проблему. Удачи в программировании!

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос