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

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

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

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

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

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.

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.