Помогите, пожалуйста. Очень нужно!!!
Написать программу(на Паскале) , реализующую следующий алгоритм: Дан массив A(N) (N - четное). Сформировать массив B(M), элементами которого являются средние арифметические соседних пар рядом стоящих в массиве A чисел. (например, массив A состоит из элементов 1; 3; 5; -2; 0; 4; 0; 3. Элементами массива B будут 2; 1,5; 2; 1,5)
Ответы
Программа:
Pascal:
var
A, B: array of real;
N, i, j: integer;
begin
write('N = '); readln(N);
if N mod 2 <> 0 then begin
writeln('Введите чётное N! ');
exit();
end;
randomize;
SetLength(A, N);
SetLength(B, N div 2);
for i := 0 to N - 1 do
A[i] := random(100);
writeln(A);
i := 0;
while i < N do begin
B[j] := (A[i] + A[i + 1]) / 2;
inc(i, 2); inc(j);
end;
writeln(B);
end.
Объяснение:
В начале выделяется память под массивы действительных чисел. Далее - регистрируются переменные N, i, j для будущего использования.
В основном коде вводится N и делается проверка, является ли чётным это число. Если нечётное, пишем предупреждение и заканчиваем выполнение кода. В ином случае устанавливаем длину массива для A, равную N. Длина массива B - целое число при делении N на 2. После - массив А заполняется рандомными числами (можете интервал указать самостоятельно, либо же добавить ввод с клавиатуры). Далее, с помощью цикла while, устанавливаем элемент массива B с индексом j равным среднего арифметического текущему числа массива A с индексом i и следующего (i + 1). Далее мы увеличиваем i на 2, j на 1. Потому что в массиве А мы перешагиваем один элемент, чтобы пропустить тот, который использовался в теле как i + 1, j - отвечает за индекс элемента массива В.
В конце - вывод двух сформированных массивов.
Результат:
N = 6
[82,39,88,40,10,84]
[60.5,64,47]