Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

28.07.2010, 01:46. Просмотров 1638. Ответов 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;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2010, 01:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти два максимальных числа (C++):

Найти два максимальных числа из потока - C++
Здравствуйте, нужна ваша помощь. Нужно найти два максимальных числа из одного файла и записать их в другой файл. Сделала так, а опыта и...

Последовательность целых чисел. Найти два минимальных / два максимальных элемента - C++
Дана последовательность целых чисел a1,a2,...,an, где n=&gt; 3. Найти: а) два максимальных элемента последовательности; б) два минимальных...

Два максимальных числа - C++
Привет все:) Есть код, на нахождение максимального числа. Как его переделать что бы выводилось два максимальных числа ( каждое число должно...

Найти два максимальных элемента из интервала - C++
Даны числа a, b (0 &lt; a &lt; b) и набор из десяти элементов. Найти минимальный1|максимальный2 из элементов, содержащихся в интервале (a, b)....

найти два максимальных значения в массиве - C++
Собственно, не получается реализовать нахождение второго максимального значения: // Найдти 2 максимальных значения без сортировки массива...

Функция, находящая два максимальных числа в массиве и возвращающая структуру с этими числами - C++
Напишите функцию, находящую два максимальных числа в массиве и возвращающую структуру с этими числами и подробно расписать код.

9
fasked
Эксперт С++
4948 / 2528 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
28.07.2010, 01:50 #2
Без массива не отследишь вводилась уже это значение или нет (если оно конечно не равно максимальному). Как мне кажется.
Если только в файл писать

Ну а если это не имеет значения, то в принципе ничего страшного, сейчас набросаю.
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 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;
}
0
fasked
Эксперт С++
4948 / 2528 / 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");
}
1
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
28.07.2010, 02:00  [ТС] #5
fasked, Красиво, но сие опять же не предполагается. Изучены должны быть только первые две главы. То есть ничего существенного кроме ввода/вывода, циклов, условий.
0
fasked
Эксперт С++
4948 / 2528 / 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;
1
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
28.07.2010, 02:04  [ТС] #7
fasked, Да действительно. Ступил. Спасибо)
0
fasked
Эксперт С++
4948 / 2528 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
28.07.2010, 02:05 #8
Только вот полной проверки на повторы это все равно не даст.
0
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");
}
0
fasked
Эксперт С++
4948 / 2528 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
28.07.2010, 02:44 #10
Цитата Сообщение от pannaruto Посмотреть сообщение
в начальной момент max1, max2 сразу получили значение 0, поэтому если все введенные числа отрицательны то неправильный ответ получится.
Думаю лучше присваивать им значение первого числа, которое ползователь вводит.
да-да, все верно
0
28.07.2010, 02:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.07.2010, 02:44
Привет! Вот еще темы с ответами:

В одномерном массиве найти два максимальных элемента и удалить все элементы между ними - C++
Дана задача : В одномерном массиве найти два максимальных элемента и удалить все элементы между ними. Массив задается случайным образом. ...

Массив A содержит только два одинаковых числа. Найти эти числа и указать их индексы ошибка - C++
Массив А содержит только два одинаковых числа. Найти эти числа и указать их индексы. #include &lt;iostream&gt; const int N = 3; ...

Два двузначных числа, записанных подряд, образуют четырехзначное число, которое нацело делится на их произведение. Найти все такие числа - C++
Товарищи катятки, запоролся на простой задаче: Два двузначных числа, записанных подряд, образуют четырехзначное число, которое нацело...

Определить два максимальных элемента массива - C++
Дан массив из n элементов, необходимо определить максимальный элемент массива и элемент, являющийся максимальным без учёта этого элемента. ...


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

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

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