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

Задача

Создать массив из 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.

Пример(ы) выполнения программы на языке Pascal

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

Особенности решения на языке программирования Pascal

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

Исходный код на языке программирования C

#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);
}

Пример(ы) выполнения программы на языке C

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

Особенности решения на языке программирования C

В этом примере максимальный элемент - число 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)

Пример(ы) выполнения программы на языке Python

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

Особенности решения на языке программирования Python

Максимальный 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

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)

Пример(ы) выполнения программы на языке Basic

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

Особенности решения на языке программирования Basic

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

Тема

Массивы

Уровень сложности

Простой

Дата публикации