C++ Напишите программу, которая ищет медиану массива – элемент, делящий его на две равные части: в одной находятся элементы, которые не меньше медианы, в другой -– не больше медианы.
Есть далеко неполный код этой задачи, я пытался разными решить, но всё тщетно
Вот код:
void qSort( int nStart, int nEnd )
{
int L, R, c, X;
if ( nStart >= nEnd ) return;
L = nStart; R = nEnd;
X = A[(L+R)/2];
while ( L X ) R --;
if ( L <= R ) {
c = A[L]; A[L] = A[R]; A[R] = c;
L ++; R --;
}
}
qSort ( nStart, R );
qSort ( L, nEnd );
}
Поскольку среднее всех введенных чисел нельзя найти, пока не будет закончен ввод этих чисел, а затем каждое число нужно будет сравнивать с этим средним, введенные числа придется где-то хранить. Например, в массиве длиной 100 (в условии сказано, что количество чисел "до 100").
Считаем, что описан массив a[1..100] и в нем находятся n≤100 целых чисел (можно и нецелых, но раз ничего не сказано в условии, мы вправе решить это сами).
Тогда среднее определится по формуле:
а сумму мы умеем считать, накапливая значение в цикле со счетчиком, дающем проход по всем элементам массива.
Искомое количество чисел, меньших среднего - это тоже сумма, найти которую позволит еще один цикл, но в нем уже будет анализ условия.
2. Программа на языке Pascal
const
nn=100;
var
i,n,k,s:integer;
m:real;
a:array[1..nn] of integer;
begin
Write('Количество чисел равно '); Read(n);
Writeln('Введите числа:');
s:=0;
for i:=1 to n do begin Read(a[i]); s:=s+a[i] end;
m:=s/n;
k:=0;
for i:=1 to n do
if a[i]<m then Inc(k);
Writeln('Количество чисел, превышающих среднее значение, равно ',k)
end.
3. Пример работы программы
Количество чисел равно 10
Введите числа:
6 -4 11 -7 5 7 0 3 5 -2
Количество чисел, превышающих среднее значение, равно 4