(Pascal) Дан одномерный массив целых чисел. Заменить элементы стоящие на четных местах с числом
который является средним арифмитическим элементов стоящих на нечетных местах.Ответы на вопрос
var
a: array of real;
size, i: integer;
average: real;
begin
randomize;
write('Размер массива: ');
readln(size);
SetLength(a, size);
average := 0;
writeln(' *** Сгенерированный массив *** ');
for i := 0 to size - 1 do
begin
a[i] := random(20);
write(' ', a[i]);
if Odd(i) = false then average := average + a[i];
end;
average := average / trunc((size + 1) / 2);
writeln(#13 + 'Среднее арифметическое = ', average);
writeln(' *** Новый массив ***');
for i := 0 to size - 1 do
begin
if Odd(i) = true then a[i] := average;
if Frac(a[i]) = 0 then write(' ', a[i])
else write(' ', a[i]:0:1);
end;
end.
Для решения этой задачи на языке программирования Pascal, следует выполнить следующие шаги:
- Вычислить среднее арифметическое элементов, стоящих на нечетных местах.
- Заменить элементы, стоящие на четных местах, вычисленным средним арифметическим.
Вот пример кода, реализующего указанные шаги:
pascalprogram ReplaceWithAverage; const N = 10; // Размер массива var arr: array[1..N] of Integer; i: Integer; sumOdd, countOdd: Integer; averageOdd: Real; begin // Заполнение массива целыми числами (для примера) for i := 1 to N do arr[i] := i; // Начальное состояние массива writeln('Исходный массив:'); for i := 1 to N do write(arr[i], ' '); writeln; // Вычисление среднего арифметического элементов на нечетных местах sumOdd := 0; countOdd := 0; for i := 1 to N do begin if i mod 2 = 1 then begin sumOdd := sumOdd + arr[i]; Inc(countOdd); end; end; if countOdd <> 0 then averageOdd := sumOdd / countOdd else averageOdd := 0; // Если нет нечетных элементов, чтобы избежать деления на ноль // Замена элементов на четных местах с вычисленным средним арифметическим for i := 1 to N do begin if i mod 2 = 0 then arr[i] := Round(averageOdd); // Округление до ближайшего целого числа end; // Конечное состояние массива writeln('Массив после замены:'); for i := 1 to N do write(arr[i], ' '); writeln; readln; end.
Обратите внимание, что в приведенном примере массив заполняется числами от 1 до N, но в реальном коде вы можете заполнить массив любыми другими значениями или прочитать их из ввода пользователя. Также обратите внимание на округление среднего значения до ближайшего целого числа (функция Round).
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili
