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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
russia91
0 / 0 / 0
Регистрация: 14.03.2010
Сообщений: 5
#1

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

15.03.2010, 19:49. Просмотров 1774. Ответов 23
Метки нет (Все метки)

Вот сижу над очередной задачкой. Найти 2 наиболее высоких числа из 10 введенных, при условии что цифры не повторяются.

Максимальное вытащил а вот как второе по величине все придумать не могу...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream.h>
#include<conio.h>
 
main()
{
 int counter, max=0, min=0, n; //max- масимальное число. min - второе по велечине число.
 
 for(counter=1;counter<=10;counter++)
 {
  cout << "vvedite 4islo: "; cin >> n;
  if(n>max)
  max=n;
 }
 cout << "max: " << max << endl;
 cout << "min: " << min << endl;
 getch();
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2010, 19:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти два наибольших числа из всех введенных, при условии что цифры не повторяются (C++):

Программа которая выводит два наибольших числа из десяти введенных. Пожалуйста объясните суть работы программы - C++
#include &lt;iostream&gt; using namespace std; int main() { int i; float number, largest, largest2;

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

Оператор for,if ( найти два наибольших числа) - C++
Подскажите пожайлуста....начал самостоятельно изучать С++, в основном по Дейтелу Х.М. но и видеуроки итд... но вот в книге Дейтела есть в...

Найти два наибольших простых числа в матрице - C++
Помогите,пожалуйста Задана матрица целых чисел A(m,n). Найти два наибольших простых числа. Первое простое число заменить минимальным...

Даны четыре разных числа. Найти среди них два наибольших - C++
Даны четыре разных числа. Найти среди них два наибольших. Чет я не понимаю как это все написать через if кто может написать ? как...

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

23
R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
08.10.2011, 20:07 #16
vortexx1, что-то не пойму я вашу мысль. Можно код?
0
vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
08.10.2011, 20:28 #17
R136a1,

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
35
36
37
38
39
40
#include <iostream>
using namespace std;
 
int main ()
{
    const int size = 6;
    
    int array [ size ] = { 1, 2, 3, 4, 5, 6 };
    
    // находим первое максимальное
    int max = array [ 0 ];
    
    for ( int i = 0; i < size; i++ )
        if ( array [ i ] > max )
           max = array [ i ];
           
    cout << max << endl;
    
    // находим порядковый номер максимального
    int number;
    
    for ( int k = 0; k < size; k++ )
        if ( array [ k ] == max )
           number = k;
    
    // ставим ноль вместо первого максимального       
    array [ number ] = 0;
    
    // находим второе максимальное
    max = 0;
    
    for ( int i = 0; i < size; i++ )
        if ( array [ i ] > max )
           max = array [ i ];
           
    cout << max << endl;
    
    system ( "pause" );
    return 0;
}
0
R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
08.10.2011, 20:46 #18
vortexx1, я думал, что вы имели в виду алгоритм без использования массива.
1
Thinker
Эксперт С++
4227 / 2201 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
08.10.2011, 22:22 #19
Цитата Сообщение от russia91 Посмотреть сообщение
C++
1
max=0, min=0; //max- масимальное число. min - второе по велечине число.

Не по теме:

Такую ошибку обычно новички в программировании делают, так нельзя инициализировать для произвольного набора элементов!

1
R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
09.10.2011, 16:00 #20
Thinker, благодаря вашему замечанию, я пришел к мысли, что мой код не ищет максимумы, если все числа, к примеру отрицательные

немного подредактировал свой код

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <iostream>
#include <limits>
 
int lowmax( int );
 
int main()
{
    int counter = 1;
    int number;
    int min, min2, max;
    int temp;
 
    while(counter <= 10)
    {
            std::cout << "Введите число: ";
            std::cin >> number;
 
        if(counter == 1)
            max = number;
 
        temp = max;
 
        if(number > max)
        {
            max = number;
            if(temp != max)
                min = temp;
        }
        else if(number < max)
            min2 = lowmax(number);
 
        counter++;
    }
 
    if(max < 0)
        min = min2;
    else if(max > 0 && min2 > min)
        min = min2;
 
    std::cout << "max: " << max << std::endl;
    std::cout << "min: " << min << std::endl;
 
    return 0;
}
 
int lowmax( int min )
{
    static int plusTemp = 0, minusTemp = std::numeric_limits< int >::min();
    static int plusReturnMin = 0, minusReturnMin = 0;
    static int ptemp = 0;
    static int mtemp = std::numeric_limits< int >::min();
    static int returnMin;
 
    if(min > 0)
    {
        if(plusTemp < min)
        {
            if(ptemp < min)
            {
                    plusReturnMin = min;
                plusTemp = min;
            }
        }
 
    }
    else if( min < 0 )
    {
        if(minusTemp < min)
        {
            if(mtemp < min)
            {
                minusReturnMin = min;
                minusTemp = min;
            }
        }
    }
 
    mtemp = min;
    ptemp = min;
 
    if(plusReturnMin == 0 && minusReturnMin != std::numeric_limits< int >::min())
        returnMin = minusReturnMin;
    else if(minusReturnMin == std::numeric_limits< int >::min() && plusReturnMin != 0)
        returnMin = plusReturnMin;
    else if(minusReturnMin != std::numeric_limits< int >::min() && plusReturnMin != 0)
        returnMin = plusReturnMin;
 
    return returnMin;
}
0
Edgar_B
0 / 0 / 0
Регистрация: 10.01.2016
Сообщений: 1
10.01.2016, 14:52 #21
Могу предложить такое решение. Поскольку задача эта из 4 глава Дейтела, то и использовал я тут только те знания, которые теоретически можно получить из глав 1-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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
using namespace std;
int main ()
{
    int number1=0;//1 число
    int number2=0;//2 число
    int largest1=0;//1 максимальное
    int largest2=0;//2 максимальное
    int counter=1;//счетчик
 
    while (counter<=10)//цикл продолжается, пока не будет указано 10 чисел
    {
        cout<<"Enter number: ";//просим ввести число
        cin>>number1;//вводим число
        cout<<endl;//новая строка
 
        if(number1>largest1||number1>largest2)//проверяем, является ли это число больше хотя бы одного из максимальных, если условие выполняется - двигаемся дальше
        {
            if (number1>largest1)//проверяем, больше ли оно первого максимального
            {
                largest2=largest1;//если условие верно - второе макс становится первым
                largest1=number1;//а первое становится этим числом
            }
            else
            {
                largest2=number1;//если число больше только второго, первый макс не трогаем, а второй макс становится этим числом
            }
        }
        counter++;//счетчик +1
        cout<<"Enter number: ";//просим ввести число (для пользователя не будет разницы, number1 это или number2
        cin>>number2;//вводим число
 
        if(number2>largest1||number2>largest2)//дальше все аналогично
        {
            if (number2>largest1)
            {
                largest2=largest1;
                largest1=number2;
            }
            else
            {
                largest2=number2;
            }
 
        }
        counter++;
        cout<<endl;
 
    }
    cout<<endl;
    cout<<"Amount of numbers is "<<counter-1<<endl;
    cout<<endl;
    cout<<"First largest is "<<largest1<<endl;
    cout<<endl;
    cout<<"Second largest is "<<largest2<<endl;
    cout<<endl;
    cout<<"Have a good day!"<<endl;
    return 0;
}
0
GbaLog-
Любитель чаепитий
3010 / 1378 / 333
Регистрация: 24.08.2014
Сообщений: 4,885
Записей в блоге: 1
Завершенные тесты: 2
10.01.2016, 15:14 #22
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
using namespace std;
 
int main() {
    int max1, max2;
    cin >> max1 >> max2;
    for( int i = 1; i <= 8; i++ ) {
        int tmp;
        cin >> tmp;
        if( max1 < tmp ) max1 = tmp;
        if( max2 < tmp && max1 > tmp ) max2 = tmp;
    }
    cout << max1 << "\n" << max2 << endl;
    cin.get();
    return 0;
}
0
gru74ik
Модератор
Эксперт CЭксперт С++
4185 / 1833 / 198
Регистрация: 20.02.2013
Сообщений: 4,972
Записей в блоге: 21
10.01.2016, 17:51 #23
Почти шесть лет прошло с момента первого сообщения в теме...
0
LemonMuffin
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 12
12.12.2016, 13:53 #24
Почти семь лет прошло с момента первого сообщения в теме
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
35
36
37
38
39
40
41
42
#include <iostream>
using std::cin;
using std::cout;
 
class LargestNumber
{
public:
    void twoLargest()
    {
        int number;
        int largest1 = 0;
        int largest2 = 0;
 
        int count = 1;
 
        while(count<=10)
            {
            cout<<"Привет! Введи число: ";
            cin>>number;
 
            if(number>largest1)
            {
                largest2=largest1;
                largest1=number;
            }
            else
                {
                if (number>largest2)
                largest2=number;
                }
            count++;
            }
        cout<<"Largest1 = " << largest1 <<"\nLargest2 = " << largest2;
    }
};
 
int main()
{
    LargestNumber Numb;
    Numb.twoLargest();
    return 0;
 }
0
12.12.2016, 13:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2016, 13:53
Привет! Вот еще темы с ответами:

Циклы: найти произведение последней цифры и минимальной цифры числа с произведением всех остальных - C++
Помогите, я даже не знаю о чем речь(((( Дано натуральное число n. Найти произведение последней цифры и минимальной цифры этого числа...

Убедиться, что последние числа ряда повторяются, и найти период повторения - C++
Задан ряд аn=an-2+an-1, a0=0, a1=1. Убедитесь, что последние числа этого ряда повторяются. Чему равна длина периода повторения? Не...

Можно ли вернуть функцией два значения при условии что она будет вещественного типа? - C++
Вот само задание...уже пол часа думаю есть ли такая возможность или я что то не так понимаю.Написать программу с реализацией в виде вызова...

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


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

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

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