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

Есть массив из 20 чисел. Как найти порядковый номер второго максимального числа? (не влазить в функции)

16.12.2017, 21:52. Показов 706. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот что получилось у меня, но находит только максимальное число.
C++
1
2
3
4
5
6
7
8
9
int main(){
    int n[] = {4, 3, 2, 43};
    int max = n[0];
    for (int i=1; i<4; i++){
        if (n[i]>max) max = n[i];
    }
    cout << max << endl;
    system("pause");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2017, 21:52
Ответы с готовыми решениями:

Дано 10 вещественных чисел. Найти порядковый номер второго положительного числа
Помогите пожалуйста с программой. Нашел на форуме ответ на задачу &quot;10 вещественных чисел. Найти...

Найти порядковый номер максимального числа последовательности
Вводится числа. Конец ввода - возрастающая последовательность из двух чисел. Найти порядковый номер...

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

Найти порядковый номер максимального элемента массива вещественных чисел
Найти порядковый номер максимального элемента массива вещественных чисел.

6
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
16.12.2017, 22:05 2
Как-то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main(){
    int n[] = {4, 3, 2, 43};
    int im=0, im2 = 1;
    if (n[im] < n[im2])
      int t = im;
      im = im2;
      im2 = t;
    }
    for (int i=2; i<4; i++){
        if (n[i]<=n[im2]) continue;
        if (n[i] <= n[im] im2 = i;
        else {
          im2 = im;
          im = i;
        }
    }
    cout << im2 << endl;  // Порядковый номер!
    system("pause");
    return 0;
}
Добавлено через 2 минуты
Предполагается, что все числа разные. Если могут быть одинаковые, чуток потоньше надо сделать...
0
Модератор
5046 / 3275 / 526
Регистрация: 01.06.2013
Сообщений: 6,806
Записей в блоге: 9
16.12.2017, 22:41 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main(){
    int n[] = {4, 3, 2, 43};
    int im=-1, im2;
    for(int j=0; j<2; j++){
        im2=-1;
        for (int i=0; i<sizeof(n)/sizeof(*n); i++)
            if (im!=i && (im2<0 || n[im2]<n[i])) 
                im2=i;
        im=im2;
    }
    cout << im2 << endl;  // Порядковый номер!
    system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 16.12.2017
Сообщений: 4
16.12.2017, 23:52  [ТС] 4
Цитата Сообщение от Байт Посмотреть сообщение
Как-то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main(){
    int n[] = {4, 3, 2, 43};
    int im=0, im2 = 1;
    if (n[im] < n[im2])
      int t = im;
      im = im2;
      im2 = t;
    }
    for (int i=2; i<4; i++){
        if (n[i]<=n[im2]) continue;
        if (n[i] <= n[im] im2 = i;
        else {
          im2 = im;
          im = i;
        }
    }
    cout << im2 << endl;  // Порядковый номер!
    system("pause");
    return 0;
}
Добавлено через 2 минуты
Предполагается, что все числа разные. Если могут быть одинаковые, чуток потоньше надо сделать...
не работает
0
Комп_Оратор)
Эксперт по математике/физике
8949 / 4703 / 629
Регистрация: 04.12.2011
Сообщений: 13,999
Записей в блоге: 16
17.12.2017, 00:01 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
int main(){
    //int n[] = {4, 3, 2, 43};
    int n[] = {4, 3, 43, 2, 43};
    int sz=int(sizeof(n)/sizeof(n[0]));
 
    int im=0, im2=0;
    
    for (int i=0; i<sz; i++){
                if (n[i]>n[im]){                    
                im2=im;
                im=i;
                }else   
                    if (n[i]==n[im]){   
                    im2=i;
                        }       
    }
    cout<<"the max is "<<im <<" next is " << im2 << endl;  // Порядковый номер!
    system("pause");
    return 0;
}
1
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
17.12.2017, 00:05 6
Цитата Сообщение от yakor-dima Посмотреть сообщение
не работает
Пониамете, я уже столько раз объяснял бессмысленность этой реплики, что уже устал. Попробуйте сами догадаться, почему я здесь не могу ничем помочь

Добавлено через 1 минуту

Не по теме:

IGPIGP, Спасибо! Вы настоящий друг!:)

1
0 / 0 / 0
Регистрация: 16.12.2017
Сообщений: 4
18.12.2017, 22:42  [ТС] 7
Написали такой код мне, но он не совсем корректно работает(

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 "stdafx.h"
#include <iostream>
#include "Math.h"
using namespace std;
 
int main() {
    //int n[] = {4, 3, 2, 43};
    int n[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 23, 14, 15, 16, 17, 18, 19, 20 };
    int sz = int(sizeof(n) / sizeof(n[0]));
 
    int im = 0, im2 = 0;
 
    for (int i = 0; i<sz; i++) {
        if (n[i]>n[im]) {
            im2 = im;
            im = i;
        }
        else
            if (n[i] == n[im]) {
                im2 = i;
            }
    }
    cout << "the max is " << im << " next is " << im2 << endl;  // Порядковый номер!
    system("pause");
    return 0;
}
0
18.12.2017, 22:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2017, 22:42
Помогаю со студенческими работами здесь

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


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

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

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