Перейти к содержанию
Найти наибольший элемент и его порядковый номер в массиве
Просмотров 17.8к. Обновлено 15 октября 2021
Заполнить одномерный массив случайными числами. Найти и вывести на экран наибольший его элемент и порядковый номер этого элемента.
Заполнение массива и поиск наибольшего элемента можно выполнять в одном цикле.
Поскольку необходимо найти не только максимальный элемент, но и его индекс, то лучше искать индекс, так как по нему всегда можно получить значение из массива. Конечно, при поиске можно сохранять и индекс, и элемент в двух разных переменных. Однако этого делать не обязательно. До цикла присвоим переменной, в которой будет храниться индекс максимального элемента, значение 1. Это значит, предполагается, что максимальный элемент находится в первой ячейке массива.
Тело цикла будет состоять из следующих действий:
- Сгенерировать случайное число и записать его в очередную ячейку массива.
- Вывести полученное число на экран.
- Если это число больше, чем то, что хранится под индексом, записанным в переменную-максимум, то присвоить этой переменной текущий индекс (не само число!).
После того, как индекс наибольшего элемента будет найден, вывести его на экран. Чтобы вывести элемент по данному индексу, надо использовать выражение извлечения элемента из массива. Например, если 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.
64 26 99 37 57 64 6 21 48 19
arr[3] = 99
Язык Си
#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] = %dn", mx, arr[mx]);
}
75 46 7 39 11 29 34 77 86 25
arr[8] = 86
Python
найти максимальный элемент массива 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]))
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-256
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 "Номер элемента: " + mx
print "Значение элемента: " + arr[mx]
21.9; 58.4; 24.4; 72.6; 88.5; 65.2; 56.6; 65.1; 72.6; 40.4;
Номер элемента: 4
Значение элемента: 88.5
У меня есть двумерный массив [m,n] элементов. Как я могу узнать порядковый номер элемента в массиве? Индексация с нуля.
Пример:
int[,] array = new int[3,2];
array[0,0] — нулевой элемент
array[0,1] — первый элемент
array[1,0] — второй элемент
array[1,1] — третий элемент
И так далее.
lospejos
4511 золотой знак3 серебряных знака13 бронзовых знаков
задан 9 дек 2016 в 10:00
1
array[i,j]
порядковый номер i*n+j
ответ дан 9 дек 2016 в 10:06
TrymountTrymount
7183 серебряных знака13 бронзовых знаков
4
array[m,n]
, например array(3,4)
(3 строки,4 колонки):
Порядковый номер элемента массива = (row-1) * n + col
если с ноля стартуешь сделай еще -1
Harry
214k15 золотых знаков117 серебряных знаков229 бронзовых знаков
ответ дан 12 янв 2017 в 18:09
Kirber 0 / 0 / 0 Регистрация: 22.06.2019 Сообщений: 4 |
||||
1 |
||||
Нужно узнать порядковый номер элемента массива22.06.2019, 17:33. Показов 13907. Ответов 7 Метки нет (Все метки)
Нужно ввести массив состоящий из 11 чисел, потом найти максимум отрицательных, и порядковый номер этих отрицательных чисел.
0 |
«C with Classes» 1634 / 1392 / 521 Регистрация: 16.08.2014 Сообщений: 5,828 Записей в блоге: 1 |
|
22.06.2019, 18:00 |
2 |
Пока я только смог найти максимум отрицательных. твой код не читал так как тоска без тегов, но если ты нашел «Пока я только смог найти максимум отрицательных.
0 |
7427 / 5021 / 2891 Регистрация: 18.12.2017 Сообщений: 15,694 |
|
22.06.2019, 18:17 |
3 |
Kirber, напишите оригинал условия задачи
0 |
0 / 0 / 0 Регистрация: 22.06.2019 Сообщений: 4 |
|
22.06.2019, 18:21 [ТС] |
4 |
Kirber, напишите оригинал условия задачи Найти максимум отрицательных элементов массива и его порядковый номер(номера). Добавлено через 51 секунду можешь сразу и писать в переменную и порядковый номер. В этом то и дело, что я не понимаю как работают порядковые номера и указатели(
0 |
sk007 Life Builder 532 / 496 / 374 Регистрация: 12.01.2011 Сообщений: 1,753 |
||||
22.06.2019, 18:33 |
5 |
|||
0 |
Yetty 7427 / 5021 / 2891 Регистрация: 18.12.2017 Сообщений: 15,694 |
||||
22.06.2019, 18:59 |
6 |
|||
Ввести массив, состоящий из 11 чисел. Найти максимальный из отрицательных элементов массива и его порядковый номер (номера).
0 |
SomniPhobia 593 / 430 / 135 Регистрация: 22.11.2017 Сообщений: 1,213 |
||||
22.06.2019, 19:07 |
7 |
|||
Сообщение было отмечено Kirber как решение РешениеKirber, привет! Кликните здесь для просмотра всего текста
Миниатюры
1 |
sk007 Life Builder 532 / 496 / 374 Регистрация: 12.01.2011 Сообщений: 1,753 |
||||
22.06.2019, 19:11 |
8 |
|||
0 |
Дана задача
Составить программу, осуществляющую поиск элемента p в массиве, состоящем из n элементов. В случае присутствия этого числа в массиве вывести его порядковый номер, в случае отсутствия — вывести соответствующее сообщение
Итак, что нам необходимо сделать? Нам известно, что есть некоторый массив, длина которого n элементов. Также нам нужно проверить, есть ли среди этих элементов число p. Как решать? Ничего сложного нет: необходимо просто сравнить каждый элемент массива с числом p.
const
n = 5;
var
s: array [1..n] of integer;
x, i, p: integer;
begin
writeln(‘Введите число ,которое будем искать в массиве’);
readln(p);
writeln(‘заполните ‘, n, ‘ элементов массива’);
for i := 1 to n do
begin
readln(s[i]);
if s[i] = p then x := i;
end;
if x = 0 then writeln(‘В массиве нет такого числа!’) else writeln(‘Число найдено, его порядковый номер = ‘, x);
end.
Данный код представляет собой самый простой поиск элемента в массиве. Однако в нем есть один существенный недостаток. Здесь не рассматривается случай, когда в массиве 2 и одинаковых элементов равных p. Проще говоря, если например p=5, а в массиве 5 повторяется 2 раза, первый раз в позиции 2, второй — в позиции 6, то в результате выше написанного кода будет выведено, что число 5 стоит а позиции 6. Объясняется это просто: в результате цикла, записывается сначала более ранняя позиция, которая потом стирается другой. То есть при нахождении новой позиции старая стирается, и в итоге цикла записывается только конечная позиция. Многих данный код устроит, но лучше его доработать. Будем считать все случаи, включая наихудший, в котором все элементы массива равны p. Поэтому для позиций создаем дополнительный цикл (назовем его k). Итак модифицируем программу
const
n = 5;
var
s, k: array [1..n] of integer;
y, i, p: integer;
begin
writeln(‘Введите число ,которое будем искать в массиве’);
readln(p);
writeln(‘заполните ‘, n, ‘ элементов массива’);
for i := 1 to n do
begin
readln(s[i]);
if s[i] = p then begin
y := y + 1;
k[y] := i;
end;
end;
if y = 0 then writeln(‘В массиве нет такого числа!’) else
if y = 1 then writeln(‘Число найдено, его порядковый номер = ‘, k[y]) else
begin
write(‘Число найдено, его порядковые номера = ‘);
for i := 1 to y do
write(k[i], ‘,’);
end;
end.
You can get all of the array’s values as an array with array_values()
and then use array_search()
to get the position (offset) of that value in the array.
$uniq_id = 10;
$all_vals = array_values($test); // => array(3, 8, 10, ... )
echo array_search( $uniq_id, $all_vals ); // => 2
Because PHP array indices are zero-based, you’ll get 0 for the first item, 1 for the second item, etc. If you want the first item to be «1,» then just add one. All together now:
$uniq_id = 10;
echo array_search( $uniq_id, array_values( $test ) ) + 1; // => 3
It’s not clear to me, however, that this is necessarily as performant as just doing a foreach
:
$uniq_id = 10;
$idx = 1;
foreach($test as $val) {
if($val == $uniq_id) {
break;
}
$idx++;
}
echo $idx; // => 3