Задать вопрос
20 августа, 12:43

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;) Ошибка времени выполнения: Индекс находился вне границ массива.

+5
Ответы (1)
  1. 20 августа, 12:55
    0
    Программа вычисляет значение выражения, состоящего из целых чисел и знаков "+"/"-" между ними. (Контроля правильности ввода нет!)

    var s, t:string; i, a, b, c:integer;

    begin

    write ('Введите выражение: ') ;

    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
Знаете ответ на вопрос?
Не уверены в ответе?
Правильный ответ на вопрос 👍 «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 - ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы
Похожие вопросы по информатике