Найти арифметическую сумму выражения - индекс выходит за пределы массива - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Программа должна высчитывать арифметическую сумму выражения.
Листинг программы
  1. Program n4str100;
  2. Var s,pod :String;
  3. Var A:Array[1..10] of Integer;
  4. Var i,x,x1,r,sum,p:Integer;
  5. begin
  6. Writeln('Введите арифмитическое выражение...');
  7. Read(s);
  8. i:=1;
  9. repeat
  10. p:=Pos('+',s);
  11. If p<>0 then begin
  12. pod:=Copy(s,1,p);
  13. Delete(pod,p,1);
  14. Val(pod,x,r);
  15. A[i]:=x;
  16. i:=i+1;
  17. end;
  18. until p=0;
  19. i:=i-1;
  20. Val(s,x1,r);
  21. For i:=1 to i do sum:=sum+A[i];
  22. Sum:=sum+x1;
  23. Writeln('Сумма чисел равна = ',sum);
  24. end.

Решение задачи: «Найти арифметическую сумму выражения - индекс выходит за пределы массива»

textual
Листинг программы
  1. Var s,pod :String;
  2. Var A:Array[1..10] of Integer;
  3. Var i,x,x1,r,sum,p:Integer;
  4. begin
  5. Writeln('Введите арифмитическое выражение...');
  6. Read(s);
  7. i:=1;
  8. repeat
  9. p:=Pos('+',s);
  10. If p<>0 then begin {Проверяем условие - остался ли знак +}
  11. pod:=Copy(s,1,p-1);{копируем подстроку, исключая последний знак }
  12. Delete(s,1,p);{удаляем из строки первое число и знак}
  13. Val(pod,x,r);{преобразование строка-->число}
  14. A[i]:=x;
  15. i:=i+1;
  16. end;
  17. until p=0;{если знаков больше нету-выход из цикла}
  18. i:=i-1;{в цикле с пост условием при выходе счетчик больше на 1 }
  19. Val(s,x1,r);{преобразуем последнее строковое представление числа}
  20. For i:=1 to i do sum:=sum+A[i];
  21. Sum:=sum+x1;
  22. Writeln('Сумма чисел равна = ',sum);
  23. end.

Объяснение кода листинга программы

В данном коде представлен алгоритм вычисления суммы элементов массива, используя арифметическое выражение, введенное пользователем.

  1. Объявлены следующие переменные: s, pod - строковые переменные; A - массив целых чисел; i, x, x1, r, sum - целочисленные переменные.
  2. Пользователю предлагается ввести арифметическое выражение.
  3. Переменная i устанавливается равной 1.
  4. В цикле while выполняется следующая логика:
    • Проверяется наличие знака + в строке s. Если знак + найден, то выполняется следующий блок кода:
    • Копируется подстрока s, начиная с первого символа и заканчивая символом перед найденным знаком + (используется функция Copy).
    • Из строки s удаляется подстрока, начиная с первого символа и заканчивая символом перед найденным знаком + (используется функция Delete).
    • Преобразуется подстрока в число и сохраняется в переменную x (используется функция Val).
    • Элемент массива A, соответствующий индексу i, присваивается значение x.
    • i увеличивается на 1.
    • Если знак + не найден, то цикл завершается.
  5. После завершения цикла проверяется значение переменной i. Если оно больше 0, то выполняется следующий блок кода:
    • Преобразуется строка s в число и сохраняется в переменную x1 (используется функция Val).
    • Вычисляется сумма элементов массива A от индекса 1 до i-1, и сохраняется в переменную sum.
    • Значение x1 добавляется к сумме.
  6. Выводится сообщение о сумме чисел, равной sum.
  7. Код завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы