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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
#1

Найти два максимальных числа - C++

28.07.2010, 01:46. Просмотров 1468. Ответов 9
Метки нет (Все метки)

Задача впринципе легкая, но меня что-то зациклило по полной. Найти два максимальных числа из 10 введенных. БЕЗ массива. Одинаковое число может быть введено только ОДИН раз. Следовательно цикл может быть только один. Можно конечно наверное заводить под каждое введенное значение новую переменную... Но есть ли резон в этом? Кто может помогите плз. Вот код ищет максимальное число.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Находит максимальное число из 10 заданных
 
#include <iostream>
 
int main()
{
    int Number=0, max=0;
    for(int i=0;i<10;i++)
    {
        std::cout<<"Enter number: ";
        std::cin>>Number;
        if(Number>max)
            max=Number;
    }
    std::cout<<"Max: "<< max <<'\n';
    return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2010, 01:46     Найти два максимальных числа
Посмотрите здесь:

C++ Найти два наименьших числа
C++ найти два максимальных значения в массиве
C++ Два максимальных значения из 10 целых чисел
Два двузначных числа, записанных подряд, образуют четырехзначное число, которое нацело делится на их произведение. Найти все такие числа C++
C++ Два максимальных числа
C++ Функция, находящая два максимальных числа в массиве и возвращающая структуру с этими числами
C++ Массив A содержит только два одинаковых числа. Найти эти числа и указать их индексы ошибка
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
28.07.2010, 01:50     Найти два максимальных числа #2
Без массива не отследишь вводилась уже это значение или нет (если оно конечно не равно максимальному). Как мне кажется.
Если только в файл писать

Ну а если это не имеет значения, то в принципе ничего страшного, сейчас набросаю.
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
28.07.2010, 01:55  [ТС]     Найти два максимальных числа #3
fasked, Имеет... С массивом примерно знаю как делать) А вот без массива - фигушки. Просто в Дейтелах есть эта задача. Причем там еще массивы не проходились по сценарию книги. Оп. Я понял про что ты) Без массива можешь поиск двух макс элементов?) Только чтобы они не были равны)

Добавлено через 2 минуты
С массивом...

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
//Находит максимальное число из 10 заданных
 
#include <iostream>
 
int main()
{
    int Number[10], max=0, max2=0;
    for(int i=0;i<10;i++)
    {
        std::cout<<"Enter number: ";
        std::cin>>Number[i];
        if(Number[i]>max)
            max=Number[i];
    }
    for(int i=0;i<10;i++)
    {
        if(Number[i]!=max)
            if(Number[i]>max2)
                max2=Number[i];
    }
 
    std::cout<<"Max: "<< max <<'\n';
    std::cout<<"Max2: "<< max2 <<'\n';
    return 0;
}
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
28.07.2010, 01:56     Найти два максимальных числа #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
ну максимум что могу сообразить, вот такая вот проверка:
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
#include <iostream>
 
int main()
{
    int in = 0, max1 = 0, max2 = 0;
 
    for(int i = 0; i < 10; ++i)
    {
        std::cout << "> ";
        std::cin >> in;
        
        if(in == max1 || in == max2)
        {
            std::cout << "ERROR" << std::endl;
        }
 
        else if(in > max1)
        {
            max1 = in;
 
            if(max1 > max2)
                std::swap(max1, max2);
        }
    }
 
    std::cout << "max1: " << max1 << std::endl;
    std::cout << "max2: " << max2 << std::endl;
 
    system("PAUSE");
}
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
28.07.2010, 02:00  [ТС]     Найти два максимальных числа #5
fasked, Красиво, но сие опять же не предполагается. Изучены должны быть только первые две главы. То есть ничего существенного кроме ввода/вывода, циклов, условий.
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
28.07.2010, 02:03     Найти два максимальных числа #6
Цитата Сообщение от Lavroff Посмотреть сообщение
Красиво, но сие опять же не предполагается. Изучены должны быть только первые две главы. То есть ничего существенного кроме ввода/вывода, циклов, условий.
так тут ничего больше и нет, std::swap можно ручками расписать:
C++
1
2
3
in = max1;
max1 = max2;
max2 = in;
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
28.07.2010, 02:04  [ТС]     Найти два максимальных числа #7
fasked, Да действительно. Ступил. Спасибо)
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
28.07.2010, 02:05     Найти два максимальных числа #8
Только вот полной проверки на повторы это все равно не даст.
pannaruto
11 / 11 / 2
Регистрация: 12.05.2010
Сообщений: 29
28.07.2010, 02:36     Найти два максимальных числа #9
fasked, в начальной момент max1, max2 сразу получили значение 0, поэтому если все введенные числа отрицательны то неправильный ответ получится.
Думаю лучше присваивать им значение первого числа, которое ползователь вводит.
Ну вот у меня такой вариант.
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
#include <iostream>
using namespace std;
 
int main()
{
    int in, max1, max2;
 
    cout << "> ";
    cin >> in;
 
    max1 = max2 = in;
 
    for( int i = 1; i < 10; i++ )
    {
        cout << "> ";
        cin >> in;
 
        if ( in > max1 )
        {
            max2 = max1;
            max1 = in;
        }
        else
            if ( in < max1 && ( in > max2 || max2 == max1 ) )
                    max2 = in;
    }
 
    cout << "max1 : " << max1 << endl
         << "max2 : " << max2 << endl;
 
    system("PAUSE");
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.07.2010, 02:44     Найти два максимальных числа
Еще ссылки по теме:

C++ Сравните два числа A и B. Задан два целых неотрицательных числа A и B
C++ В одномерном массиве найти два максимальных элемента и удалить все элементы между ними
Последовательность целых чисел. Найти два минимальных / два максимальных элемента C++
C++ Найти два максимальных числа из потока
Найти два максимальных элемента из интервала C++

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

Или воспользуйтесь поиском по форуму:
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
28.07.2010, 02:44     Найти два максимальных числа #10
Цитата Сообщение от pannaruto Посмотреть сообщение
в начальной момент max1, max2 сразу получили значение 0, поэтому если все введенные числа отрицательны то неправильный ответ получится.
Думаю лучше присваивать им значение первого числа, которое ползователь вводит.
да-да, все верно
Yandex
Объявления
28.07.2010, 02:44     Найти два максимальных числа
Ответ Создать тему
Опции темы

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