0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 4
1

Найти второй максимальный элемент в массиве

23.04.2017, 17:58. Показов 13044. Ответов 9
Метки нет (Все метки)

Здравствуйте!

Подскажите, пожалуйста, как найти второй максимальный элемент в массиве?

Спасибо.

Моя попытка:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int max=0, P, M;
 
        for (int i = 0; i < N; i++) {
          if (arr[i]>max) {
            max = arr[i];
            P=i;
          }
        }
 
        for (int i = 0; i < N; i++) {
          if (arr[i]>max) {
            if (i!=P) {
             max = arr[i];
             M=i;
            }
          }
        }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2017, 17:58
Ответы с готовыми решениями:

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

Не находит второй максимальный элемент в массиве
#include &quot;stdafx.h&quot; #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace...

Найти максимальный элемент и заменить им первый элемент строки в двумерном массиве
В матрице X(4,5) в каждой строке найти максимальный элемент и заменить им первый элемент строки....

В одномерном целочисленном массиве найти минимальные элемент m и максимальный элемент М
В одномерном целочисленном массиве найти минимальные элемент m и максимальный элемент М. Вывести в...

9
147 / 147 / 104
Регистрация: 13.11.2016
Сообщений: 557
23.04.2017, 20:37 2
Лучший ответ Сообщение было отмечено ver6959 как решение

Решение

Цитата Сообщение от ver6959 Посмотреть сообщение
второй максимальный элемент
то есть в массиве есть второй элемент равный максимальному? или тот, что максимально близкий к мексимальному?

Добавлено через 37 минут
ver6959,
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
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
    const int n=8;
    int max = INT_MIN, p, v, arr[n];
    cout << "Fill in the array:" << endl;
    for (int i=0; i<n; i++)
    {
        cin >> arr[i];
        if (arr[i] > max)
        {
            max = arr[i];
            p = i;
        }
        if (arr[i]==max)
        {
            if (i!=p)
                v=i;
        }
    }
    system ("cls");
    cout << "Your array is" << endl;
    for (int i=0; i<n; i++)
    {
        cout << arr[i] << '\t';
    }
    cout << endl;
    cout << p+1 <<endl;
    cout << v+1 << endl;
    system("pause");
    return 0;
}
1
775 / 583 / 316
Регистрация: 24.02.2017
Сообщений: 2,063
23.04.2017, 21:36 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream.h>
 
int main()
{
  int max=0, mas[10]={5,1,8,11,2,10,11,3,9,10};
 
  for(int i=0;i<10;i++)
    if(max<mas[i])
     max=mas[i];
 
   for(int i=0;i<10;i++)
     if(max==mas[i])
     cout<<max<<" pri i = "<<i<<"\n";
 
system("pause>NUL");
    return 0;
}
0
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 4
23.04.2017, 21:44  [ТС] 4
Второй элемент, который равен максимальному.

Добавлено через 2 минуты
А если в массиве будет 3 максимальных элемента, но запомнить индекс нужно именно второго? По Вашей программе ведь запомнится индекс последнего максимального элемента, разве нет?
0
775 / 583 / 316
Регистрация: 24.02.2017
Сообщений: 2,063
23.04.2017, 21:54 5
Добавь счетчик количества выводов элементов массива
C++
1
 if(max==mas[i] && t<2)
1
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 4
23.04.2017, 21:56  [ТС] 6
второй элемент равный максимальному
0
775 / 583 / 316
Регистрация: 24.02.2017
Сообщений: 2,063
23.04.2017, 21:57 7
C++
1
2
3
4
5
6
7
8
9
10
11
12
 int max=0, t=0, mas[10]={5,1,8,11,11,10,11,3,9,10};
 
  for(int i=0;i<10;i++)
    if(max<mas[i])
     max=mas[i];
 
   for(int i=0;i<10;i++)
     if(max==mas[i] && t<2)
     {
     cout<<max<<" pri i = "<<i<<"\n";
      t++;
      }
0
4 / 4 / 6
Регистрация: 08.01.2012
Сообщений: 27
23.04.2017, 22:45 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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include<iostream>
#include<clocale>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "russian");
 
    const int n = 5;
    int arr[n] = { 2,1,5,6,3 };
    int x = 0, y = 0;
 
//первое решение------------------------------------------------------------------------
    for (int i = 0; i < n; i++)
    {
        for (int j = i ; j < n; j++)
        {
            if (arr[i] < arr[j] && arr[i] > arr[x])
            {
                x = j;
                i = j;
            }
            else if (arr[i] > arr[j] && arr[i] > arr[x])
            {
                x = i;
            }
        }
    }
    cout << "В массиве под номером " << x+1 << 
        " находится максимальный элемент массива со значением равным " << arr[x] << endl;
 
    for (int i = 0; i < n; i++)
    {
        for (int j = i; j < n; j++)
        {
            if (arr[i] < arr[j] && arr[i] > arr[y] && j != x)
            {
                y = j;
                i = j;
            }
            else if (arr[i] > arr[j] && arr[i] > arr[y] && i != x)
            {
                y = i;
            }
        }
    }
    cout << "В массиве под номером " << y + 1 <<
        " находится второй максимальный элемент массива со значением равным " << arr[y] << endl << endl;
 
 
//второе решение--------------------------------------------------------------------------------
    int max = arr[0], max2 = arr[0];
    int p, m;
    for (int i = 0; i < n; i++)
    {
        if (arr[i] > max)
        {
            p = i;
            max = arr[i];
        }
    }
    cout <<"Номер элемента в массиве "<< p+1 << 
        ", максимальное значение равно: " << max << endl;
    for (int i = 0; i < n; i++)
    {
        if (arr[i] > max2 && arr[i] != max)
        {
            m = i;
            max2 = arr[i];
        }
    }
    cout << "Номер элемента в массиве " << m + 1 << 
        ", второе максимальное значение равно: " << max2 << endl << endl;
 
    system("pause");
    return 0;
}
0
1404 / 646 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
23.04.2017, 23:05 9
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <algorithm>
#include <iterator>
 
int main()
{
    int arr[] = { 1, 5, 4, 2, 3, 5, 4, 3, 2, 4, 6, 8, 98, 7, 5, 4, 2, 4 };
    std::nth_element(std::begin(arr), std::end(arr) - 2, std::end(arr));
    std::cout << *(std::end(arr) - 2) << std::endl;
    return 0;
}
0
147 / 147 / 104
Регистрация: 13.11.2016
Сообщений: 557
24.04.2017, 19:21 10
ver6959, сделайте счетчик.. или сделайте отдельный цикл для вывода массива а для поиска элементов другой и там в ифе (который ищет второй индекс) делайте break;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2017, 19:21
Помогаю со студенческими работами здесь

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

Необходимо найти максимальный элемент во второй части матрицы.
Задачи 1) Дан двухмерный массив A размерностью n n (Матрица). Если провести диагонали, то...

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

Классы. В массиве чисел размером 6х6 элементов найти максимальный элемент, минимальный элемент и их индексы
В массиве чисел размером 6х6 элементов найти максимальный элемент, минимальный элемент и их...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru