42 / 41 / 5
Регистрация: 27.11.2009
Сообщений: 100
1

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

31.03.2010, 20:31. Показов 13315. Ответов 29
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет))) Вопрос вот в чём: подскажите как найти 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; 
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.03.2010, 20:31
Ответы с готовыми решениями:

Задача на поиск 2х наибольших чисел
Попалась задачка с ныне мне не встречавшейся переменной tmp. Единственное, что я нашла в интернете,...

Найти 10 наибольших чисел в массиве из 10000 чисел и записать в массив
Есть массив положительных чисел (значение каждого числа не превышает 3000). Найти 10 наибольших...

Поиск в массиве: найти 5 наибольших элементов
Есть массив чисел, в нем найти 5 крупнейших чисел и вывести на экран. Вот мой код, но он не...

Определть сумму трех наибольших чисел в последовательности из N чисел.
Напишите программу, которая определяет сумму трех наибольших чисел в последовательности из N чисел.

29
Заблокирован
Автор FAQ
04.08.2011, 12:11 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Olga_ Посмотреть сообщение
два различных максимальных
- максимальный элемент 1 или несколько с таким же значением, элемент с другим значением уже не будет максимальным, если нужно найти максимальный элемент и самый близкий к нему это другой алгоритм!
0
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
04.08.2011, 12:20 22
часто в задачах надо найти именно два максимальных элемента, а именно,максимальный и максимальный из множества без учета того максимального. Понятно, что максимальный один. Вы просто свели задачу к количеству повторений максимального элемента, это другая задача.

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

Добавлено через 6 минут
Поэтому данная задача нуждается в четкой формулировке. Либо найти максимальный и второй по величине максимальный, то это один алгоритм, либо найти количество максимальных элементов, либо найти все номера максимальных элементов и т.д.
0
Заблокирован
Автор FAQ
04.08.2011, 12:36 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-х наибольших чисел  
0
Заблокирован
Автор FAQ
04.08.2011, 12:43 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-х наибольших чисел  
0
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
04.08.2011, 12:43 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 -не верно.
0
Заблокирован
Автор FAQ
04.08.2011, 12:50 26
Цитата Сообщение от Olga_ Посмотреть сообщение
Не работает для всех данных, попробуйте 5, 5, 4, 1,...,1 и по убывающей... Результат будет 5 и 5 -не верно.
Возможно у вас что то с компилятором или руки не из того места, вот мой ввод и скриншот работы
Миниатюры
Поиск 2-х наибольших чисел  
0
Заблокирован
Автор FAQ
04.08.2011, 12:51 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;
}
0
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
04.08.2011, 12:59 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 минут
Вариантов можно кучу придумать, все от задачи зависит. Пусть кому надо выбирают алгоритм по душе.
0
Заблокирован
Автор FAQ
04.08.2011, 13:00 29
Цитата Сообщение от Olga_ Посмотреть сообщение
Не работает для всех данных, попробуйте 5, 5, 4, 1,...,1 и по убывающей... Результат будет 5 и 5 -не верно.
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Ещё раз скомпилируй код
- Ну так что??!
Вводя флаг о максимальной величине - увеличиваем число переменных
0
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
04.08.2011, 13:01 30
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- Ну так что??!
Вводя флаг о максимальной величине - увеличиваем число переменных
Зато у меня проверок меньше, а на 4 байта памяти не убудет.
Так что, 2 алгоритма рабочие?
0
04.08.2011, 13:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.08.2011, 13:01
Помогаю со студенческими работами здесь

Нахождение суммы трех наибольших чисел в наборе из 7 чисел
Помогите написать, программу нахождения суммы из трех наибольших чисел набора 7 чисел. Я вообще без...

Поиск наименьших, наибольших из 10 элементов.
Найти два наименьших1|наибольших2 из данных десяти элементов Заранее спасибо Добавлено через 3...

матрица и поиск наибольших элементов
люди добрые, помоги выполнить задание с клавиатуры вводится матрица размера 7 на 6. Найти...

Поиск заданного количества наибольших значений
Найти заданное количество наибольших значений массива. using System; using...


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

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

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