Условие: Задан вещественный массив А размерностью N. Заменить элемент Ak (3 ≤ k ≤ N), среднее арифметическое K первых элементов массива.
Сложность: легкая.
Решение задачи
Для начала продумаем наше решение.
- Первым делом нужно создать массив, заполнить его числами, в ручную или случайным образом не сказано, так что сделаем в ручную.
- Затем мы вводим K — это элемент массива который мы будем менять.
- Дальше мы ищем среднее арифметическое K первых элементов. Т.е. допустим у нас массив из 12 чисел, мы вводим K = 6, это будет значит чтобы мы ищем среднее первых 6 чисел массива.
- Последним действием будет замена 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 . |