Найти арифметическую сумму выражения - индекс выходит за пределы массива - PascalABC.NET
Формулировка задачи:
Программа должна высчитывать арифметическую сумму выражения.
Листинг программы
- Program n4str100;
- Var s,pod :String;
- Var A:Array[1..10] of Integer;
- Var i,x,x1,r,sum,p:Integer;
- begin
- Writeln('Введите арифмитическое выражение...');
- Read(s);
- i:=1;
- repeat
- p:=Pos('+',s);
- If p<>0 then begin
- pod:=Copy(s,1,p);
- Delete(pod,p,1);
- Val(pod,x,r);
- A[i]:=x;
- i:=i+1;
- end;
- until p=0;
- i:=i-1;
- Val(s,x1,r);
- For i:=1 to i do sum:=sum+A[i];
- Sum:=sum+x1;
- Writeln('Сумма чисел равна = ',sum);
- end.
Решение задачи: «Найти арифметическую сумму выражения - индекс выходит за пределы массива»
textual
Листинг программы
- Var s,pod :String;
- Var A:Array[1..10] of Integer;
- Var i,x,x1,r,sum,p:Integer;
- begin
- Writeln('Введите арифмитическое выражение...');
- Read(s);
- i:=1;
- repeat
- p:=Pos('+',s);
- If p<>0 then begin {Проверяем условие - остался ли знак +}
- pod:=Copy(s,1,p-1);{копируем подстроку, исключая последний знак }
- Delete(s,1,p);{удаляем из строки первое число и знак}
- Val(pod,x,r);{преобразование строка-->число}
- A[i]:=x;
- i:=i+1;
- end;
- until p=0;{если знаков больше нету-выход из цикла}
- i:=i-1;{в цикле с пост условием при выходе счетчик больше на 1 }
- Val(s,x1,r);{преобразуем последнее строковое представление числа}
- For i:=1 to i do sum:=sum+A[i];
- Sum:=sum+x1;
- Writeln('Сумма чисел равна = ',sum);
- end.
Объяснение кода листинга программы
В данном коде представлен алгоритм вычисления суммы элементов массива, используя арифметическое выражение, введенное пользователем.
- Объявлены следующие переменные: s, pod - строковые переменные; A - массив целых чисел; i, x, x1, r, sum - целочисленные переменные.
- Пользователю предлагается ввести арифметическое выражение.
- Переменная i устанавливается равной 1.
- В цикле while выполняется следующая логика:
- Проверяется наличие знака
+
в строке s. Если знак+
найден, то выполняется следующий блок кода: - Копируется подстрока s, начиная с первого символа и заканчивая символом перед найденным знаком
+
(используется функция Copy). - Из строки s удаляется подстрока, начиная с первого символа и заканчивая символом перед найденным знаком
+
(используется функция Delete). - Преобразуется подстрока в число и сохраняется в переменную x (используется функция Val).
- Элемент массива A, соответствующий индексу i, присваивается значение x.
- i увеличивается на 1.
- Если знак
+
не найден, то цикл завершается.
- Проверяется наличие знака
- После завершения цикла проверяется значение переменной i. Если оно больше 0, то выполняется следующий блок кода:
- Преобразуется строка s в число и сохраняется в переменную x1 (используется функция Val).
- Вычисляется сумма элементов массива A от индекса 1 до i-1, и сохраняется в переменную sum.
- Значение x1 добавляется к сумме.
- Выводится сообщение о сумме чисел, равной sum.
- Код завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д