• program mm;
    var o,oo, v,n,n1,q1,r1,y1:string;
    l, x,b, z,y,r,q:integer;
    begin
    v:='вычислить ';
    read(n);
    n1:=n;

    q:=pos('+ or -',n);
    q1:=copy(n,1,q-1);
    val(q1,x,r);
    Delete(n,1,q);

    r:=pos('- or +' ,n);
    r1:=copy( n,1,r-1);
    val(r1,b,r);
    delete(n,1,r);

    y:=pos('=',n);
    y1:=copy(n,1,y-1);
    val(y1,z,r);
    delete(n,1,y);

    if n[q]='+ 'then l:=x+b else l:=x-b;
    if n[r]='-' then l:=l+z else l:=l-z;
    o:=v+n1;
    oo:='ответ='+' '+l;
    writeln(o);
    write(oo);

    end.
    пишет, что в этой строке(if n[q]='+ 'then l:=x+b else l:=x-b; ) Ошибка времени выполнения: Индекс находился вне границ массива.

Ответы 1

  • Программа вычисляет значение выражения, состоящего из целых чисел и знаков "+"/"-" между ними. (Контроля правильности ввода нет!)var s,t:string; i,a,b,c:integer;beginwrite('Введите выражение: ');readln(s);a:=0;t:='';for i:=1 to length(s) do begin if (s[i]<>'-')and(s[i]<>'+')and(s[i]<>'=')  then t:=t+s[i]  else begin val(t,b,c); a:=a+b; t:=s[i]; end; end;writeln(s,a);end.Пример:Введите выражение: 12+34-10=12+34-10=36
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

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

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

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