Нужно исправить код - Pascal ABC

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

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

условие такое: дан массив размер n нужно заполнить его рандом числами затем в другой массив переносить по 3 числа а в каждую четвертую ячейку второго массива записывать среднее ариф. 3 предыдущих чисел. я написал вот такой код.
после запуска ошибка - Ошибка времени выполнения: System.IndexOutOfRangeException: Индекс находился вне границ массива. ругается на строку p:=a[i+k]; помогите пофиксить.

Решение задачи: «Нужно исправить код»

textual
Листинг программы
const n = 30;
var
  a: array[1..n] of real;
  b: array[1..n + 10] of real;
  i, k, m: integer;
  sum: real;
begin
randomize;
writeln('Массив А');
for i := 1 to n do
 begin
  a[i] := 10*random;
  write(a[i]:5:2);
 end;
writeln;
i := 1;
m:=0;
while i < n-2 do
 begin
  sum:=0;
  for k := i to i+2  do
   begin
    m:=m+1;
    sum := sum + a[k];
    b[m]:=a[k];
   end;
  m:=m+1;
  b[m] := sum/3;
  i:=i+3;
 end;
writeln('Массив В');
for i:=1 to m do
write(b[i]:5:2);
end.

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

  1. В начале программы объявляются следующие переменные: — n — количество элементов в массиве a (30); — a — массив из n элементов типа real (1..n) — в каждой ячейке будет храниться число, полученное с помощью функции random; — b — массив из n+10 элементов типа real (1..n+10) — используется для хранения промежуточных результатов вычислений; — i, k, m — целочисленные переменные для выполнения циклов.
  2. Выполняется инициализация генератора случайных чисел с помощью функции randomize.
  3. Выводится сообщение Массив А и заполняется массив a случайными числами с помощью цикла for и функции random. Числа выводятся на экран с помощью функции write, при этом каждое число выравнивается по правому краю и занимает 5 позиций.
  4. Задаются начальные значения переменных i=1, m=0 и начинается цикл while, который выполняется до тех пор, пока i<n-2.
  5. Внутри цикла while выполняется цикл for, который охватывает три элемента массива a (от i до i+2).
  6. В каждой итерации внутреннего цикла суммируются значения элементов массива a, которые затем записываются в массив b. При этом индексы элементов массива b начинаются с m, который увеличивается на единицу на каждой итерации внешнего цикла.
  7. После завершения внутреннего цикла i увеличивается на 3, а m — на единицу.
  8. После завершения внешнего цикла, в массиве b будет содержаться сумма трех последовательных элементов массива a, деленная на 3.
  9. Выводится сообщение Массив В и с помощью цикла for и функции write все элементы массива b выводятся на экран, при этом каждое число выравнивается по правому краю и занимает 5 позиций.
  10. Программа завершается.

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


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

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

10   голосов , оценка 4 из 5