Сколько элементов массива больше по модулю максимального

Создать массив из 20 элементов в диапазоне значений от -15 до 14 включительно. Определить количество элементов по модулю больших, чем максимальный.

Суть задачи сводится к тому, что сначала надо найти максимальный элемент массива, а затем сравнить с ним абсолютные значения отрицательных элементов (потому что все положительные будут меньше максимального) и посчитать те, которые окажутся больше него.

По факту код программы получается проще, если сравнивать с максимумом все элементы массива. В результате алгоритм решения задачи сводится к следующему:

  1. Присвоить переменной, в которой будет храниться максимум, значение меньше, чем возможное в массиве (в данном случае -16).
  2. Перебрать все элементы массива. Если очередной элемент больше значения, которое хранится в переменной для максимума, то поменять значение этой переменной на текущий элемент.
  3. Присвоить переменной для подсчета элементов больших по модулю максимальный значение 0.
  4. Перебрать все элементы массива. Если абсолютное значение текущего элемента больше того, что записано в переменной для максимума, то увеличить переменную-счетчик (из предыдущего пункта) на 1.
Pascal


const N = 20;
var
a: array[1..N] of integer;
max: integer;
i, count: byte;
begin
randomize;
max := -16;
for i:=1 to N do begin
a[i] := random(30)-15;
write(a[i],' ');
if a[i] > max then max := a[i];
end;
writeln;
count := 0;
for i:=1 to N do
if abs(a[i]) > max then
count := count + 1;
writeln(count);
end.



1 -6 -13 12 -3 12 -8 11 12 5 -7 -4 -9 -13 -13 -5 -6 0 -5 1
3

В примере максимум равен 12. Больше него по модулю число -13, которое в массиве встречается 3 раза.
Язык Си


#include < stdio.h>
#define N 20
main() {
int a[N];
int i, max, count, d;
srand(time(NULL));
max = -16;
for (i=0; i < N; i++) {
a[i] = rand()%30 - 15;
printf("%d ", a[i]);
if (a[i] > max) max = a[i];
}
printf("\n");
count = 0;
for (i=0; i < N; i++)
if (abs(a[i]) > max) count += 1;
printf("%d\n", count);
}



-3 2 -8 -14 0 11 -7 10 5 3 5 -6 9 -3 10 9 5 1 -13 8
2

В этом примере максимальный элемент - число 11. Больше него по модулю -14 и -13.
Python


from random import random
N = 20
a = [0]*N
m = -16
for i in range(N):
a[i] = int(random()*30)-15
print(a[i],end=' ');
if a[i] > m: m = a[i]
print()
count = 0
for i in range(N):
if abs(a[i]) > m:
count += 1
print(count)



-10 -2 -15 -2 5 7 -13 5 -4 -1 2 0 11 -1 2 2 -12 -7 11 14
1

Максимальный 14. Больше него по модулю только -15.
КуМир

алг больше по модулю максимального
нач
цел N = 20
цел таб a[1:N]
цел mx, i, count
mx := -16
нц для i от 1 до N
a[i] := int(rand(-15,15))
вывод a[i], " "
если a[i] > mx то mx:=a[i] все
кц
вывод нс
count := 0
нц для i от 1 до N
если abs(a[i]) > mx то
count := count + 1
все
кц
вывод count
кон



2 -2 -7 5 5 -13 -8 -7 -10 2 -15 11 -6 -15 14 -12 -6 -14 -3 13
2

Максимальное 14. Больше него по модулю два числа -15.
Basic-256


N = 20
dim a(N)
max = -16
for i=0 to N-1
a[i] = int(rand*30)-15
print a[i] + " ";
if a[i] > max then max = a[i]
next i
print
c = 0
for i=0 to N-1
if abs(a[i]) > max then c = c+1
next i
print(c)



-2 -15 11 11 10 -10 -7 7 -10 13 8 -13 -1 -10 -12 7 -14 -3 -10 -1
2

Максимальный элемент равен 13. Больше него по модулю -15 и -14.

Оцените статью
Добавить комментарий