Как найти порядковый номер числа в массиве

Перейти к содержанию

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

Просмотров 17.8к. Обновлено 15 октября 2021

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

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

Поскольку необходимо найти не только максимальный элемент, но и его индекс, то лучше искать индекс, так как по нему всегда можно получить значение из массива. Конечно, при поиске можно сохранять и индекс, и элемент в двух разных переменных. Однако этого делать не обязательно. До цикла присвоим переменной, в которой будет храниться индекс максимального элемента, значение 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.



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
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's user avatar

lospejos

4511 золотой знак3 серебряных знака13 бронзовых знаков

задан 9 дек 2016 в 10:00

J.John's user avatar

1

array[i,j]
порядковый номер i*n+j

ответ дан 9 дек 2016 в 10:06

Trymount's user avatar

TrymountTrymount

7183 серебряных знака13 бронзовых знаков

4

array[m,n], например array(3,4) (3 строки,4 колонки):

Порядковый номер элемента массива = (row-1) * n + col

если с ноля стартуешь сделай еще -1

Harry's user avatar

Harry

214k15 золотых знаков117 серебряных знаков229 бронзовых знаков

ответ дан 12 янв 2017 в 18:09

dro's user avatar

Kirber

0 / 0 / 0

Регистрация: 22.06.2019

Сообщений: 4

1

Нужно узнать порядковый номер элемента массива

22.06.2019, 17:33. Показов 13907. Ответов 7

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Нужно ввести массив состоящий из 11 чисел, потом найти максимум отрицательных, и порядковый номер этих отрицательных чисел.
Пока я только смог найти максимум отрицательных.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <conio.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{ int i, mas[11], *p, k, min(0), fl(0);
  for(i=0; i<=10; i++)
  { cout<<endl<<"Vvedite "<<i+1<<" element massiva: ";
    cin>>;
  }
  for(i=0; i<=10; i++)
  { if(mas[i]<0){ min=mas[i];
                  fl++;
                }
  }
  if(fl==0) cout<<endl<<"Net chisel <0!";
  else { for(i=0; i<=10; i++)
          { if (mas[i]<0 && mas[i]<=min) min=mas[i];
          }
       }
getch();
return 0;
}



0



«C with Classes»

1634 / 1392 / 521

Регистрация: 16.08.2014

Сообщений: 5,828

Записей в блоге: 1

22.06.2019, 18:00

2

Цитата
Сообщение от Kirber
Посмотреть сообщение

Пока я только смог найти максимум отрицательных.

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



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

C++
1
2
3
4
5
6
7
8
9
int getNegMaxIndex(int *mas, int count)
{
    int negMaxIndex = 0;
    for(int i = 0; i<count; ++i)
        if(mas[i]<0&&mas[i]>mas[negMaxIndex])
            negMaxIndex = i;
        
    return negMaxIndex;
}



0



Yetty

7427 / 5021 / 2891

Регистрация: 18.12.2017

Сообщений: 15,694

22.06.2019, 18:59

6

Ввести массив, состоящий из 11 чисел. Найти максимальный из отрицательных элементов массива и его порядковый номер (номера).

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
using namespace std;
 
int main()
{
    const int n=11;    
    double a[n], max_neg=0.;
    
    cout << "Enter " << n << " elements:n";    
    for (int i = 0; i < n; i++)
    {
    cin >> a[i];
    if (a[i]<0. && (max_neg==0. || a[i]>max_neg)) max_neg=a[i];
    }
    
    if(max_neg)     
    {
    cout << "max negative = " << max_neg << "n";    
    for (int i = 0; i < n; i++)
    if (a[i]==max_neg) cout << "number=" << i+1 << "n";    
    }
    else cout << "Negative elements are absentn";
    
system("pause");
return 0;
}



0



SomniPhobia

593 / 430 / 135

Регистрация: 22.11.2017

Сообщений: 1,213

22.06.2019, 19:07

7

Лучший ответ Сообщение было отмечено Kirber как решение

Решение

Kirber, привет!
Держи код.

Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <numeric>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Rus");
 
    int arr[11u];
    for (size_t idx = 0u; idx < 11u; ++idx)
    {
        cout << "Введите " << idx + 1u << " элемент массива ";
        cin >> arr[idx];
    }
    int max = (numeric_limits<int>::min)();
    for (size_t idx = 0u; idx < 11u; ++idx)
    {
        max = arr[idx] < 0 && arr[idx] > max ? arr[idx] : max;
    }
    if (max != (numeric_limits<int>::min)())
    {
        size_t idxs[11u];
        size_t count = 0u;
        for (size_t idx = 0u; idx < 11u; ++idx)
        {
            if (arr[idx] == max)
            {
                idxs[count++] = idx;
            }
        }
        cout << "Максимальное значение среди отрицательных элементов массива " << max << endl;
        cout << "Его порядковый номер(а)" << endl;
        for (size_t idx = 0u; idx < count; ++idx)
        {
            cout << idxs[idx] << " ";
        }
        cout << endl;
    }
    else
    {
        cout << "В массиве не найдено максимальных значений" << endl;
    }
 
    system("pause");
    return 0;
}

Миниатюры

Нужно узнать порядковый номер элемента массива
 



1



sk007

Life Builder

532 / 496 / 374

Регистрация: 12.01.2011

Сообщений: 1,753

22.06.2019, 19:11

8

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
void showNegMaxIndexes(int *mas, int count)
{
    int negIndex=-1, i;
    
    //Находим индекс первого отриц. числа
    for(i = 0; i<count; ++i)
        if(mas[i]<0)
        {
            negIndex = i;
            break;
        }
    
    if(negIndex>-1)
    {
        //Находим максимум отриц. число
        for(i=negIndex+1; i<count; ++i)
            if(mas[i]<0&&mas[i]>mas[negIndex]
                negIndex = i;
                
        cout>>"Максимальное отрицательное число: "<<mas[negIndex];
        
        //Находим номера максимальных отриц. чисел
        cout<<endl<<"negMasIndexes: ";
        for(i=negIndex; i<count; ++i)
            if(mas[i] == mas[negIndex])
                cout<<" "<<i+1;
    }
    else
        cout<<endl<<"В массиве нет отриц. чисел!";
}



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

Понравилась статья? Поделить с друзьями:
  • Как найти угол сечения в цилиндре
  • Как найти мощность в контуре
  • Как составить таблицу в excel расхода топлива
  • Как найти страничку в instagram
  • Как найти другой аккаунт в телефоне