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

Ответы 2

  • Спасибо большое! Просто наверное меня переклинило, надо же просто с сделать string? Конечно глупая ошибка, но я только начал в школе паскаль проходить:)
    • Автор:

      luke6cpx
    • 6 лет назад
    • 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, как строки, а потом пытаетесь обратиться к ним, как к функциям, употребляя запись объявленных переменных в формате вызова функций с параметром.
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years