Задачи по Pascal. Заменить элемент A[k] средним арифметическим K-первых элементов.

Задачи по Pascal

Условие: Задан вещественный массив А размерностью N. Заменить элемент Ak (3 ≤ k ≤ N), среднее арифметическое K первых элементов массива.

Сложность: легкая.

Решение задачи

Для начала продумаем наше решение.

  1. Первым делом нужно создать массив, заполнить его числами, в ручную или случайным образом не сказано, так что сделаем в ручную.
  2. Затем мы вводим K — это элемент массива который мы будем менять.
  3. Дальше мы ищем среднее арифметическое K первых элементов. Т.е. допустим у нас массив из 12 чисел, мы вводим K = 6, это будет значит чтобы мы ищем среднее первых 6 чисел массива.
  4. Последним действием будет замена Ak.

Начнем мы с каркаса нашей программы

1
2
3
4
5
6
7
8
9
10
11
type
massiv = array [1..100] of real; // создаем свой тип данных для массива
var
ave: real;
k,N,i: integer; // объявляем
A: massiv; // переменные
begin
write('Введите длину массива : ');readln(N); // просим пользователя ввести длину массива
readln; // чтобы программа не закрывалась
end.

Тут мы создали свой тип данных для массива, как и зачем читайте ( тут ), объявили переменные, попросили пользователя ввести кол-во элементов массива.

Теперь заполним массив числами:

1
2
3
4
for i:=1 to n do // пускаем цикл для заполнения массива
begin
write('Введите ',i, ' элемент : '); readln(A[i]); // просим пользователя заполнить массив
end;

Дальше нужно чтобы пользователь ввел число K, но для этого числа есть условие (3 ≤ k ≤ N), т.е. надо чтобы юзер вводил число K пока не будет соблюдено это условие:

1
2
3
repeat
write('K = '); readln(k);
until (k >= 3) and (k <= N); // вводим число K пока не выполнится условие

Ищем среднее арифметическое, чтобы это сделать мы создадим цикл от первого элемента массива до K и всё это сложим, затем уже после цикла поделим сумму на K.
Если что именно так оно ищется, сумму делим на кол-во

1
2
for i:=1 to k do ave:=ave + A[i]; // ищем сумму
ave := ave / k; // вычисляем среднее арифметическое

Ну и теперь осталось просто поменять Ak на то что у нас получилось и вывести результат:

1
2
A[k]:=ave; // заменяем
for i:=1 to N do write(A[i]:0:2,' '); // выводим

Всё решение задачи Pascal

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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.
cyber
Оцените автора
CyberLesson | Быстро освоить программирование Pascal и C++. Решение задач Pascal и C++
Добавить комментарий