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

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

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

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

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

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

Вот результат :

Написать ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *