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