Поскольку среднее всех введенных чисел нельзя найти, пока не будет закончен ввод этих чисел, а затем каждое число нужно будет сравнивать с этим средним, введенные числа придется где-то хранить. Например, в массиве длиной 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
Const N = 15; Var A:array[1..N] of integer; i, Max, Min:integer; // Тут будут храниться НОМЕРА Min и Max Begin Randomize; {Заполнение и вывод массива} Write('Исходный массив:'); For i:= 1 to N do Begin A[i]:=random(21)-10; Write(' ',A[i]) End; WriteLn; {Поиск максимума и минимума} Max:=1; Min:=1; // Проверять начинаем со второго элемента, // потому, что в первую очередь будем сравнивать с первым // (т.к. Max = 1 и Min = 1) For i:= 2 to N do Begin if A[i]>A[Max] then Max:=i; if A[i]<A[Min] then Min:=i; // Поскольку тут стоят знаки строго больше и строго меньше, // будут найдены только первый встретившийся максимум // и первый встретившийся минимум. // Если бы стояли знаки больше или равно(>=) и меньше или равно(<=), // то найдены были бы последние встретившиеся Max и Min // То есть, например, в первом случае в массиве: // 1 2 3 4 5 2 5 1 // были бы найдены: Min = 1, Max = 5 // во втором случае в том же массиве были бы найдены: // Min = 8, Max = 7 End; // Сколько элементов между пятым и первым ? - три. // Между восьмым и седьмым ? - ноль // Общая формула: // Искомое кол-во элементов = |НомерМаксимума-НомерМинимума|-1 // Значение берём по модулю потому, // что как минимальный элемент может стоять после максимального, // так и максимальный после минимального // То есть без модуля было бы так: 5-1-1 = 3, 7-8-1 = -2 // А с модулем так: |5-1|-1 = 3, |7-8|-1 = 0 // Формула может выдать -1 в том случае, когда минимум равен максимум, // то есть когда все элементы массива равны. // На этот случай можно вывести соответствующее сообщение, или просто вывести ноль. WriteLn('Max = A[',Max,'] = ',A[Max]); WriteLn('Min = A[',Min,'] = ',A[Min]); i:=Abs(Max-Min)-1; // перепишем сюда получившееся значение, // чтобы потом ещё раз его не высчитывать if i = -1 then WriteLn('Все элементы массива равны.') else WriteLn('Кол-во элементов между Max и Min = ',i); End.
Пример: Исходный массив: 5 -2 -5 5 6 -7 7 -6 6 3 -4 6 -8 7 1 Max = A[7] = 7 Min = A[13] = -8 Кол-во элементов между Max и Min = 5
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку