Условие: Задан вещественный массив А размерностью N. Заменить элемент Ak (3 ≤ k ≤ N), среднее арифметическое K первых элементов массива.
Сложность: легкая.
Решение задачи :
Для начала продумаем наше решение.
- Первым делом нужно создать массив, заполнить его числами, в ручную или случайным образом не сказано, так что сделаем в ручную.
- Затем мы вводим K — это элемент массива который мы будем менять.
- Дальше мы ищем среднее арифметическое K первых элементов. Т.е. допустим у нас массив из 12 чисел, мы вводим K = 6, это будет значит чтобы мы ищем среднее первых 6 чисел массива.
- Последним действием будет замена Ak.
Начнем мы с каркаса нашей программы :
type
massiv = array [1..100] of real; // создаем свой тип данных для массива
var
ave: real;
k,N,i: integer; // объявляем
A: massiv; // переменные
begin
write('Введите длину массива : ');readln(N); // просим пользователя ввести длину массива
readln; // чтобы программа не закрывалась
end.
Тут мы создали свой тип данных для массива, как и зачем читайте ( тут ), объявили переменные, попросили пользователя ввести кол-во элементов массива.
Теперь заполним массив числами:
for i:=1 to n do // пускаем цикл для заполнения массива
begin
write('Введите ',i, ' элемент : '); readln(A[i]); // просим пользователя заполнить массив
end;
Дальше нужно чтобы пользователь ввел число K, но для этого числа есть условие (3 ≤ k ≤ N), т.е. надо чтобы юзер вводил число K пока не будет соблюдено это условие:
repeat
write('K = '); readln(k);
until (k >= 3) and (k <= N); // вводим число K пока не выполнится условие
Ищем среднее арифметическое, чтобы это сделать мы создадим цикл от первого элемента массива до K и всё это сложим, затем уже после цикла поделим сумму на K.
Если что именно так оно ищется, сумму делим на кол-во
for i:=1 to k do ave:=ave + A[i]; // ищем сумму ave := ave / k; // вычисляем среднее арифметическое
Ну и теперь осталось просто поменять Ak на то что у нас получилось и вывести результат:
A[k]:=ave; // заменяем for i:=1 to N do write(A[i]:0:2,' '); // выводим
Всё решение задачи Pascal :
type
massiv = array [1..100] of real; // создаем свой тип данных для массива
var
ave: real;
k,N,i: integer; // объявляем
A: massiv; // переменные
begin
write('Введите длину массива : ');readln(N); // просим пользователя ввести пароль
for i:=1 to N do // пускаем цикл для заполнения массива
begin
write('Введите ',i, ' элемент : '); readln(A[i]); // просим пользователя заполнить массив
end;
repeat
write('K = '); readln(k);
until (k >= 3) and (k <= N); // вводим число K пока не выполнится условие
for i:=1 to k do ave:=ave+A[i]; // ищем сумму K-первых элементов
ave := ave/k; // вычисляем среднее арифметическое
A[k]:=ave; // заменяем
for i:=1 to N do write(A[i]:0:2,' '); // выводим
readln; // чтобы программа не закрывалась
end.
