Найти наибольший элемент и его порядковый номер в массиве

Задача

Заполнить одномерный массив случайными числами. Найти и вывести на экран наибольший его элемент и порядковый номер этого элемента.

Пояснение к задаче и алгоритм решения

Заполнение массива и поиск наибольшего элемента можно выполнять в одном цикле.

Поскольку необходимо найти не только максимальный элемент, но и его индекс, то лучше искать индекс, так как по нему всегда можно получить значение из массива. Конечно, при поиске можно сохранять и индекс, и элемент в двух разных переменных. Однако этого делать не обязательно. До цикла присвоим переменной, в которой будет храниться индекс максимального элемента, значение 1. Это значит, предполагается, что максимальный элемент находится в первой ячейке массива.

Тело цикла будет состоять из следующих действий:

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

После того, как индекс наибольшего элемента будет найден, вывести его на экран. Чтобы вывести элемент по данному индексу, надо использовать выражение извлечения элемента из массива. Например, если max - это индекс, а arr - массив, то выражение будет таким: arr[max].

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

const N = 10;
var
    arr: array[1..N] of integer;
    i, max: byte;
begin
    randomize;
    max := 1;
    for i:=1 to N do begin
        arr[i] := random(100);
        write(arr[i], ' ');
        if arr[max] < arr[i] then
            max := i;
    end;
    writeln;
    writeln('arr[',max,'] = ',arr[max]);
end.

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

64 26 99 37 57 64 6 21 48 19
arr[3] = 99

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

#include <stdio.h>
#define N 10
main() {
    int arr[N], i, mx;
    srand(time(NULL));
    mx = 0;
    for (i=0; i<N; i++) {
        arr[i] = rand() % 100;
        printf("%d ", arr[i]);
        if (arr[i] > arr[mx])
            mx = i;
    }
    printf("\narr[%d] = %d\n", mx, arr[mx]);
}

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

75 46 7 39 11 29 34 77 86 25
arr[8] = 86

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

from random import random
N = 10
arr = [0] * N
mx = 0
for i in range(N):
    arr[i] = random() * 100
    print("%.2f" % arr[i], end='; ')
    if arr[i] > arr[mx]:
        mx = i
print("\narr[%d] = %.2f" % (mx, arr[mx]))

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

73.83; 16.23; 30.18; 27.41; 94.27; 46.27; 66.17; 61.07; 18.89; 61.16;
arr[4] = 94.27

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

алг
нач
  цел N = 10
  целтаб arr[1:N]
  цел mx, i
  mx := 1
  нц для i от 1 до N
    arr[i] := irnd(100)
    вывод arr[i], " "
    если arr[mx] < arr[i] то
      mx := i
    все
  кц
  вывод нс,"arr[",mx,"] = ",arr[mx]
кон

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

57 78 14 96 76 9 19 36 45 54
arr[4] = 96

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

decimal 1
N = 10
dim arr(N)
mx = 0
for i=0 to N-1
        arr[i] = rand * 100
        print arr[i] + "; ";
        if arr[i] > arr[mx] then mx = i
next i
print
print "Номер элемента: " + mx
print "Значение элемента: " + arr[mx]

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

21.9; 58.4; 24.4; 72.6; 88.5; 65.2; 56.6; 65.1; 72.6; 40.4;
Номер элемента: 4
Значение элемента: 88.5

Тема

Массивы

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

Простой

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