Найти элементы, имеющие минимальное и максимальное отклонение от среднего - Pascal
Формулировка задачи:
Большую часть задания я выполнил, осталось только это, ничего в голову не приходит, прошу помочь.
Полностью задание звучит так:
Разработать программу, в которой предусмотреть:
- ввод размерности N одномерного массива М,
- задание элементов массива двумя способами: ввод с клавиатуры и формирование значений с помощью функции RANDOM(K) генерирования случайных чисел в диапазоне [0..К-1];. Найти среднее значение элементов массива и найти элементы, имеющие минимальное и максимальное отклонение от среднего.
А вот моя программа:
Спасибо заранее))
Program Randome_dz;
var i,N,v,a,b: integer; sum,SR: real;
rg:char;
M :array[1..100000] of real;
begin
write ('Введи любое положительное N= ');
readln(n);
Writeln('Задай режим ввода элементов массива:');
writeln (' 1 – с клавиатуры');
writeln (' 2 – с помощью генератора случайных чисел');
read(rg);
case rg of
'1': begin
begin writeln ('Введи N целых чисел');
for i:=1 to N do
end;
For i:=1 to N do
Begin
readln(M[i]);
end;
end;
'2': begin
For i:=1 to N do Begin
M[i]:=random(1000);
end;
end;
end;
For i:=1 to N do Begin
end;
begin
sum:=0; for i:=1 to N do sum:=sum+M[i];
SR:=sum/N;
end;
writeln ('Сумма элементов массива sum= ',sum);
writeln ('Среднее значение элементов массива равно ',SR);
read
End.Решение задачи: «Найти элементы, имеющие минимальное и максимальное отклонение от среднего»
textual
Листинг программы
var m:array[1..40] of integer;
sr,min,max:real;
n,i,k,mmn,mmx: integer;
rg:char;
begin
repeat
write ('Введите размер массива от 2 до 40 n= ');
readln(n);
until n in [2..40];
writeln('Задайте режим ввода элементов массива:');
writeln (' 1 – с клавиатуры');
writeln (' 2 – с помощью генератора случайных чисел');
repeat
readln(rg);
until rg in ['1','2'];
case rg of
'1': begin
writeln ('Введите n целых чисел');
for i:=1 to n do
begin
write('m[',i,']=');
readln(m[i]);
end;
end;
'2': begin
write('Введите максиальное значение элементов массива k=');
readln(k);
for i:=1 to n do
m[i]:=random(k);
end;
end;
writeln('Массив');
for i:=1 to n do
write(m[i],' ');
writeln;
sr:=0;
for i:=1 to n do
sr:=sr+m[i];
sr:=sr/n;
writeln ('Среднее значение элементов массива=',sr:0:2);
min:=maxint;
max:=0;
for i:=1 to n do
begin
if abs(m[i]-sr)<min then
begin
mmn:=m[i];
min:=abs(m[i]-sr);
end;
if abs(m[i]-sr)>max then
begin
mmx:=m[i];
max:=abs(m[i]-sr);
end;
end;
writeln('Минимальное отклонение от среднего имеет элемент ',mmn);
writeln('Максимальное отклонение от среднего имеет элемент ',mmx);
end.
Объяснение кода листинга программы
- Объявление переменных:
m- массив из 40 целых чиселsr,min,max- вещественные числаn,i,k,mmn,mmx- целые числаrg- символьная переменная
- Определение размера массива:
- Пользователю предлагается ввести размер массива от 2 до 40.
- Запрос на ввод и проверка введенного значения.
- Выбор режима ввода элементов массива:
- Пользователь выбирает режим ввода элементов массива: с клавиатуры (1) или с помощью генератора случайных чисел (2).
- Ввод элементов массива:
- В зависимости от выбранного режима происходит либо ввод n целых чисел с клавиатуры, либо генерация n случайных чисел в заданном диапазоне.
- Вывод массива:
- Вывод полученного массива.
- Вычисление среднего значения элементов массива:
- Вычисление суммы всех элементов массива и их среднего значения.
- Поиск элементов с минимальным и максимальным отклонением от среднего:
- Поиск элементов с минимальным и максимальным отклонением от среднего значения.
- Вывод найденных элементов с минимальным и максимальным отклонением.