Задать вопрос
10 марта, 13:03

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

+4
Ответы (1)
  1. 10 марта, 15:00
    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 - ...» по предмету 📘 Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.
Смотреть другие ответы
Похожие вопросы по информатике
Сделать так чтобы Writeln был заменен другим словом и повторялься не больше двух раз program choise; var N_M:integer; writeln (' введи номер месяца ') ; readln (N_M) ; case N_M of 1:writeln (' январь ') ; 2:writeln (' февраль ') ;
Ответы (1)
Как сделать теперь без массива (паскале) ? var nm:array of integer; j, l:integer; begin nm: = new integer[3] (random (20), random (20), random (20)) ; writeln ('nm[0] = ', nm[0]) ; writeln ('nm[1] = ', nm[1]) ; writeln ('nm[2] = ', nm[2]) ;
Ответы (1)
Помогите перевести с Паскаля на Python: var k, s: string; n: integer; begin read (s) ; n : = 100; while n > 0 do begin n : = pos ('/', s) ; if n > 0 then begin k : = copy (s, 1, n - 1) ; writeln (k) ; delete (s, 1, n) ; end else n : = 0; end;
Ответы (1)
Паскаль. Ошибка: Индекс находился вне границ массива. Выполняю задачу на счёт слов из двух букв. Сама программа: program ss; var s:string; var i, k:integer; begin k:=0; readln (s) ; s:=s+' '; repeat i:=pos (' ', s) ;
Ответы (1)
Ошибка времени выполнения: Индекс находился вне границ массива ... чтто не так? const n=30; var i, j, p, q:integer; c:array[1 ... n, 1 ... n+1] of integer; a:array[1 ... n+1] of integer; b:array[1 ...
Ответы (1)