Сайт Богданова Дмитрия Валериевича

Задание №1702/25

Задание

Дан массив, содержащий 2017 целых чисел. Необходимо определить моду значений элементов этого массива, то есть значение, которое встречается чаще всего. Если таких значений несколько, необходимо вывести наименьшее из них. Например, в массиве из 6 элементов, равных соответственно 2; 0; 1; 0; 3; 1, модой являются значения 0 и 1, значит, ответом будет 0 — наименьшее из них.

Исходные данные объявлены так, как показано ниже. Запрещается использовать не описанные переменные, но допускается не использовать некоторые из них.

  • Копировать
    const
      N = 2017;
    var
      a : array [0 .. N - 1] of integer;
      i, j, m, p, s : integer;
    begin
      for i := 0 to N - 1 do
        readln(a[i]);
      ...
    end.
    
  • Копировать
    #include <stdio.h>
    #define N 2017
    
    int main() {
      int a[N];
      int i, j, m, p, s;
      for (i = 0; i < N; i++)
        scanf("%d", &a[i]);
      ...
      return 0;
    }
    
  • Копировать
    CONST N = 2017
    DIM A(N - 1) AS INTEGER
    DIM I, J, M, P, S AS INTEGER
    FOR I = 0 TO N - 1
      INPUT A(I)
    NEXT I
    ...
    END
    
  • Копировать
    # допускается также использо-
    # вание целочисленных
    # переменных j, m, p, s
    N = 2017
    a = []
    for i in range(N) :
      a.append(int(input()))
    ...
    

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

Решение

Подробнее...

Ответ

  • Копировать
    p := 0;
    for i := 0 to N - 1 do begin
      s := 0;
      for j := 0 to N - 1 do
        if a[j] = a[i] then
          s := s + 1;
      if s > p then begin
        p := s;
        m := a[i]
      end else
        if (s = p) and (a[i] < m) then
          m := a[i]
    end;
    writeln(m);
    
  • Копировать
    p = 0;
    for (i = 0; i < N; i++) {
      s = 0;
      for (j = 0; j < N; j++)
        if (a[j] == a[i])
          s++;
      if (s > p) {
        p = s;
        m = a[i];
      } else
        if (s == p && a[i] < m)
          m = a[i];
    }
    printf("%d", m);
    
  • Копировать
    P = 0
    FOR I = 0 TO N - 1
      S = 0
      FOR J = 0 TO N - 1
        IF A[j] = A[i] THEN
          S = S + 1
        END IF
      NEXT J
      IF S > P THEN
        P = S
        M = A[I]
      ELSE
        IF S = P AND A[I] < M THEN
          M = A[I]
        END IF
      END IF
    NEXT I
    PRINT M
    
  • Копировать
    p = 0
    for i in range(N) : 
      s = 0
      for j in range(N) :
        if a[j] == a[i] :
          s += 1
      if s > p :
        p = s
        m = a[i]
      else :
        if s == p and a[i] < m :
          m = a[i]
    print(m)
    
Подробнее...
Добавить комментарий
Комментарии (0)