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

Из 10 чисел вводимых из клавиатуры, найти 2 максимальных - C++

Восстановить пароль Регистрация
 
code-n'-help
Форумчанин Паскаля
 Аватар для code-n'-help
75 / 88 / 30
Регистрация: 08.11.2013
Сообщений: 391
Записей в блоге: 2
14.12.2013, 21:07     Из 10 чисел вводимых из клавиатуры, найти 2 максимальных #1
Помогите, пожалуйста! По заданию( написать программу которая с помощью 3 переменных а точнее: counter, number, largest и цикла определяет максимальное!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream.h>
main()
{
    int counter, largest=0, number;
    for (counter = 1; counter <= 10; counter++) {
    cout << "Vvedite max chislo" << endl;
    cin >> number;
    if (largest < number)
    largest = number;
    }
 
    cout << "Max number is " << largest << endl;
    return 0;
}
)
Вот она! Но есть задание используя подход к этой задачи надо найти 2 максимальных из 10!
Возможно ли используя только 3 переменных сделать это и как или каким образом используя больше 3 переменных?
P.S Массив нельзя только циклы! Ввод чисел один раз! Проверял программу которая выше, роботает отлично надо сделать по подобию!
Пожалуйста нужна помощь!

Добавлено через 2 минуты
Цитата Сообщение от LeonidProtasov Посмотреть сообщение
)
Скобка ошибочна извините
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2013, 21:07     Из 10 чисел вводимых из клавиатуры, найти 2 максимальных
Посмотрите здесь:

C++ Дано 10 чисел, вводимых с клавиатуры. найти два крупнейших числа и их номера
Найти сумму двух вводимых с клавиатуры вещественных чисел C++
Подсчитать разницу суммы и произведения двух чисел вводимых с клавиатуры.Результат вывести на экран C++
C++ Написать программу поиска суммы последовательности отрицательных чисел, вводимых с клавиатуры
C++ Составить программу с оператором for которая суммирует 14 целых чисел вводимых с клавиатуры во время программы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,164
Завершенные тесты: 1
14.12.2013, 21:32     Из 10 чисел вводимых из клавиатуры, найти 2 максимальных #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
26
main()
{
    int counter, largest1, largest2,number;
    cout<< "Vvedite 1 chislo" << endl;
    cin>>largest1;
    cout<< "Vvedite 2 chislo" << endl;
    cin>>number;
    if(largest1<number)
    {
          largest2=largest1;largest1=number;
    }
    for (counter = 3; counter <= 10; counter++) 
    {
        cout<< "Vvedite "<<counter<<" chislo" << endl;
        cin>>number;
        if(largest2<number && largest1>number )
        {
             largest2=number;
        }else
        if( largest1<number)
             largest1=number; 
    }
 
    cout << "Max numbers is " << largest2<<" "<<largest1<< endl;
    return 0;
}
Как уменьшить к-во переменных - не знаю.
одна для счетчика,
одна для ввода
и две для хранения найденных максимумов.
ZeR_0
116 / 108 / 37
Регистрация: 30.01.2013
Сообщений: 297
14.12.2013, 21:40     Из 10 чисел вводимых из клавиатуры, найти 2 максимальных #3
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
#include <iostream>
using namespace std;
 
void main(){
    setlocale(LC_ALL,"rus");
    int first, second;
    int buf;
 
    cout<<"Вводите числа:"<<endl;
    cin>>first;
    second = NULL;
 
    for(int i = 1; i < 10; i++){
        cin>>buf;
        if(second != NULL){
            if(buf > second){
                if(buf > first){
                    second = first;
                    first = buf;
                } else second = buf;
            }
        }else if(buf > first){
            second = first;
            first = buf;
        }else second = buf; 
    }
    cout<<"Первый максимум: "<<first<<" Второй максимум: "<<second<<endl;
}
Почему NULL? а захотелось так
На самом деле много извращенных реализаций. обойтись двумя переменными...это только если функции использовать.
chedman
80 / 79 / 2
Регистрация: 30.10.2013
Сообщений: 249
14.12.2013, 21:41     Из 10 чисел вводимых из клавиатуры, найти 2 максимальных #4
Рекурсия может иметь такой эффект, вроде как одна переменная, а результатов несколько.
ZeR_0
116 / 108 / 37
Регистрация: 30.01.2013
Сообщений: 297
14.12.2013, 21:45     Из 10 чисел вводимых из клавиатуры, найти 2 максимальных #5
Цитата Сообщение от chedman Посмотреть сообщение
Рекурсия может иметь такой эффект, вроде как одна переменная, а результатов несколько.
Рекурсией через 1 переменную? Вывести то две надо. я лично себе плохо представляю это
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
14.12.2013, 21:53     Из 10 чисел вводимых из клавиатуры, найти 2 максимальных #6
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
#include <iostream>
 
using namespace std;
 
int main()
{
    int cunter, largest, number;
    bool flag1 = false, flag2 = false;
    for (int i=0; i < 10; i++)
    {
        cin >> number;
        if (!flag1)
        {
          cunter   = number;
            flag1 = true;
        }
        else if (cunter < number)
        {
            largest = cunter;
            cunter = number;
        }
        else if (largest < number || !flag2)
        {
            largest = number;
            flag2 = true;
        }
    }
    cout << "Max1: " << cunter << "\nMax2: " << largest << endl;
}
ZeR_0
116 / 108 / 37
Регистрация: 30.01.2013
Сообщений: 297
14.12.2013, 22:02     Из 10 чисел вводимых из клавиатуры, найти 2 максимальных #7
Цитата Сообщение от Genn55 Посмотреть сообщение
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
#include <iostream>
 
using namespace std;
 
int main()
{
    int cunter, largest, number;
    bool flag1 = false, flag2 = false;
    for (int i=0; i < 10; i++)
    {
        cin >> number;
        if (!flag1)
        {
          cunter   = number;
            flag1 = true;
        }
        else if (cunter < number)
        {
            largest = cunter;
            cunter = number;
        }
        else if (largest < number || !flag2)
        {
            largest = number;
            flag2 = true;
        }
    }
    cout << "Max1: " << cunter << "\nMax2: " << largest << endl;
}
ну тут уже 5 переменных...многовато =\
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
14.12.2013, 22:18     Из 10 чисел вводимых из клавиатуры, найти 2 максимальных #8
Цитата Сообщение от ZeR_0 Посмотреть сообщение
ну тут уже 5 переменных...многовато =
Возможно ли используя только 3 переменных сделать это и как или каким образом используя больше 3 переменных?
Как просили.
chedman
80 / 79 / 2
Регистрация: 30.10.2013
Сообщений: 249
16.12.2013, 09:57     Из 10 чисел вводимых из клавиатуры, найти 2 максимальных #9
Вот изврат, не знаю почему работает и только три явные переменные :
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
#include <iostream>
 
using namespace std;
 
int main()
{
    int a1,a2,a3;
 
    cin >> a1 >> a2 >> a3;
    if(a1>a2 || a1>a3)
    {
        if(a2>a3)
            a3=a1 ;
        else
            a2=a1;
    }
 
    cin >> a1;
    if(a1>a2 || a1>a3)
    {
        if(a2>a3)
            a3=a1 ;
        else
            a2=a1;
    }
 
    cin >> a1;
    if(a1>a2 || a1>a3)
    {
        if(a2>a3)
            a3=a1 ;
        else
            a2=a1;
    }
 
    cin >> a1;
    if(a1>a2 || a1>a3)
    {
        if(a2>a3)
            a3=a1 ;
        else
            a2=a1;
    }
 
    cin >> a1;
    if(a1>a2 || a1>a3)
    {
        if(a2>a3)
            a3=a1 ;
        else
            a2=a1;
    }
 
    cin >> a1;
    if(a1>a2 || a1>a3)
    {
        if(a2>a3)
            a3=a1 ;
        else
            a2=a1;
    }
 
    cin >> a1;
    if(a1>a2 || a1>a3)
    {
        if(a2>a3)
            a3=a1 ;
        else
            a2=a1;
    }
 
    cin >> a1;
    if(a1>a2 || a1>a3)
    {
        if(a2>a3)
            a3=a1 ;
        else
            a2=a1;
    }
 
    cout << "MAX2 : " << a2 << " " << a3 << endl;
 
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2013, 10:53     Из 10 чисел вводимых из клавиатуры, найти 2 максимальных
Еще ссылки по теме:

Последовательность целых чисел, вводимых с клавиатуры до первого нуля, сохраняется в виде списка C++
C++ Сравнение чисел вводимых с клавиатуры
Разработать функцию для удаления вводимых с клавиатуры чисел из бинарного файла C++

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

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,164
Завершенные тесты: 1
16.12.2013, 10:53     Из 10 чисел вводимых из клавиатуры, найти 2 максимальных #10
Цитата Сообщение от chedman Посмотреть сообщение
и только три явные переменные
Естественно, Вы сэкономили на переменной счетчика цикла.
Yandex
Объявления
16.12.2013, 10:53     Из 10 чисел вводимых из клавиатуры, найти 2 максимальных
Ответ Создать тему
Опции темы

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