Форум программистов, компьютерный форум CyberForum.ru

Поиск 2-х наибольших чисел - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.76
Psixodelik
 Аватар для Psixodelik
38 / 37 / 2
Регистрация: 27.11.2009
Сообщений: 93
31.03.2010, 20:31     Поиск 2-х наибольших чисел #1
Всем привет))) Вопрос вот в чём: подскажите как найти 2 наибольших числа из 10...массивами пользоваться нельзя)))) Ну первое число это просто...это я сделал...вот не могу вспомнить как вывести 2-е....можете не писать сам код, а просто навести на путь истинный)))

вот пример нахождения самого наибольшего

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int _tmain(int argc, _tchar* argv[])
{
    setlocale(lc_all,"russian");
 
    int counter = 0;
    int number;
    int largest = 0;
 
    while (counter < 10)
    {
        cout << "введите объём продаж ";
        cin >> number;
        if(number > largest)
            largest = number;
        counter ++;
    }
    cout << "наибольший объём продаж = " << largest << endl;
    return 0; 
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2010, 20:31     Поиск 2-х наибольших чисел
Посмотрите здесь:

сумма 5 наибольших чисел C++
Задан массив натуральных чисел X из 20 элементов. Удалить из него 2 наибольших и наименьших элемента. C++
C++ найти произведение двух наибольших из трех введенных с клавиатуры чисел
Сумма двух наибольших чисел последовательности. C++
Найти произведение двух наибольших отрицательных чисел массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
04.08.2011, 12:11     Поиск 2-х наибольших чисел #21
Цитата Сообщение от Olga_ Посмотреть сообщение
два различных максимальных
- максимальный элемент 1 или несколько с таким же значением, элемент с другим значением уже не будет максимальным, если нужно найти максимальный элемент и самый близкий к нему это другой алгоритм!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
04.08.2011, 12:20     Поиск 2-х наибольших чисел #22
часто в задачах надо найти именно два максимальных элемента, а именно,максимальный и максимальный из множества без учета того максимального. Понятно, что максимальный один. Вы просто свели задачу к количеству повторений максимального элемента, это другая задача.

Вы проанализируйте, алгоритм в посте 18 - лучший вариант. Если в результате программа выведет INT_MIN, значит пользователь все значения одинаковые вводил (INT_MIN) и т.д. Так как массивом нельзя пользоваться, то это хороший вариант.

Добавлено через 6 минут
Поэтому данная задача нуждается в четкой формулировке. Либо найти максимальный и второй по величине максимальный, то это один алгоритм, либо найти количество максимальных элементов, либо найти все номера максимальных элементов и т.д.
-=ЮрА=-
Заблокирован
Автор FAQ
04.08.2011, 12:36     Поиск 2-х наибольших чисел #23
Цитата Сообщение от Olga_ Посмотреть сообщение
часто в задачах надо найти именно два максимальных элемента, а именно,максимальный и максимальный из множества без учета того максимального.
Вот алгоритм реализующий данную логику
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 <stdio.h>
#include <conio.h>
 
int main()
{
    int x, max1, max2;
    int nCount = 0;
    while(nCount < 10)
    {
        printf("Enter %d number\r\n", nCount + 1);
        scanf("%d",&x);
        if(nCount == 0)
        {
            max1 = x;
            max2 = x;
        }
        if(max1 < x)
        {
            max2 = max1;
            max1 = x;
        }
        else
            if(max1 == max2)
                max2 = x;
        if(max2 < x && x != max1)
            max2 = x;
        nCount++;
    }
    printf("MAX1 %d\r\n",max1);
    printf("MAX2 %d\r\n",max2);
    printf("Press any key to continue");
    getch();
    return 0;
}
Миниатюры
Поиск 2-х наибольших чисел  
-=ЮрА=-
Заблокирован
Автор FAQ
04.08.2011, 12:43     Поиск 2-х наибольших чисел #24
Чтобы снять все вопроссы привожу скриншот крайне неблагопрятного ввода - ввожу подряд несколько одинаковых причём наперёд уже максимальных элементов. Вся соль алгоритма вот в этих условиях
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if(nCount == 0)
        {
            max1 = x;
            max2 = x;
        }
        if(max1 < x)
        {
            max2 = max1;
            max1 = x;
        }
        else
            if(max1 == max2)
                max2 = x;
        if(max2 < x && x != max1)
            max2 = x;
Миниатюры
Поиск 2-х наибольших чисел  
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
04.08.2011, 12:43     Поиск 2-х наибольших чисел #25
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Вот алгоритм реализующий данную логику
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 <stdio.h>
#include <conio.h>
 
int main()
{
    int x, max1, max2;
    int nCount = 0;
    while(nCount < 10)
    {
        printf("Enter %d number\r\n", nCount + 1);
        scanf("%d",&x);
        if(nCount == 0)
        {
            max1 = x;
            max2 = x;
        }
        if(max1 < x)
        {
            max2 = max1;
            max1 = x;
        }
        else
            if(max1 == max2)
                max2 = x;
        if(max2 < x && x != max1)
            max2 = x;
        nCount++;
    }
    printf("MAX1 %d\r\n",max1);
    printf("MAX2 %d\r\n",max2);
    printf("Press any key to continue");
    getch();
    return 0;
}
Не работает для всех данных, попробуйте 5, 5, 4, 1,...,1 и по убывающей... Результат будет 5 и 5 -не верно.
-=ЮрА=-
Заблокирован
Автор FAQ
04.08.2011, 12:50     Поиск 2-х наибольших чисел #26
Цитата Сообщение от Olga_ Посмотреть сообщение
Не работает для всех данных, попробуйте 5, 5, 4, 1,...,1 и по убывающей... Результат будет 5 и 5 -не верно.
Возможно у вас что то с компилятором или руки не из того места, вот мой ввод и скриншот работы
Миниатюры
Поиск 2-х наибольших чисел  
-=ЮрА=-
Заблокирован
Автор FAQ
04.08.2011, 12:51     Поиск 2-х наибольших чисел #27
Ещё раз скомпилируй код
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 <stdio.h>
#include <conio.h>
 
int main()
{
    int x, max1, max2;
    int nCount = 0;
    while(nCount < 10)
    {
        printf("Enter %d number\r\n", nCount + 1);
        scanf("%d",&x);
        if(nCount == 0)
        {
            max1 = x;
            max2 = x;
        }
        if(max1 < x)
        {
            max2 = max1;
            max1 = x;
        }
        else
            if(max1 == max2)
                max2 = x;
        if(max2 < x && x != max1)
            max2 = x;
        nCount++;
    }
    printf("MAX1 %d\r\n",max1);
    printf("MAX2 %d\r\n",max2);
    printf("Press any key to continue");
    getch();
    return 0;
}
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
04.08.2011, 12:59     Поиск 2-х наибольших чисел #28
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
int main()
{
   int i, x, max1, max2, flag;
   flag = i = 0;
   scanf("%d", &x);
   i++;
   max1 = x;
   while (i < 10)
   {
      if (x > max1)
      {
         max2 = max1;
         max1 = x;
      }
      else if (x < max1 && !flag)
      {
         flag = 1;
         max2 = x;
      }
      else if (x > max2 && x < max1)
         max2 = x;
      scanf("%d", &x);
      i++;
   }
   printf("max1 = %d, max2 = %d\n", max1, max2);
   getchar();
   return 0;
}
Добавлено через 6 минут
Вариантов можно кучу придумать, все от задачи зависит. Пусть кому надо выбирают алгоритм по душе.
-=ЮрА=-
Заблокирован
Автор FAQ
04.08.2011, 13:00     Поиск 2-х наибольших чисел #29
Цитата Сообщение от Olga_ Посмотреть сообщение
Не работает для всех данных, попробуйте 5, 5, 4, 1,...,1 и по убывающей... Результат будет 5 и 5 -не верно.
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Ещё раз скомпилируй код
- Ну так что??!
Вводя флаг о максимальной величине - увеличиваем число переменных
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.08.2011, 13:01     Поиск 2-х наибольших чисел
Еще ссылки по теме:

Найти произведение двух наибольших четных чисел массива C++
C++ Найти сумму двух наибольших из трех заданных различных чисел
C++ Задача на поиск 2х наибольших чисел

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

Или воспользуйтесь поиском по форуму:
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
04.08.2011, 13:01     Поиск 2-х наибольших чисел #30
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- Ну так что??!
Вводя флаг о максимальной величине - увеличиваем число переменных
Зато у меня проверок меньше, а на 4 байта памяти не убудет.
Так что, 2 алгоритма рабочие?
Yandex
Объявления
04.08.2011, 13:01     Поиск 2-х наибольших чисел
Ответ Создать тему
Опции темы

Текущее время: 08:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru