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

Сравнение 3 чисел - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
C_T_A_P_M_E_X
2 / 2 / 0
Регистрация: 12.10.2012
Сообщений: 10
24.12.2013, 18:42     Сравнение 3 чисел #1
Всем привет))
В колледже задали задание: написать программу, которая сравнивает 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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
using namespace std;
 
int main() {
    int x, y, z, Max;
 
    cout << "Введите число x: ";
    cin >> x;
    cout << endl << "Введите число y: ";
    cin >> y; 
    cout << endl << "Введите число z: ";
    cin >> z;
    
    cout << "Способ №1" << endl;
    if(x > y) {
        if(x > z) Max = x;
        else Max = z;
    }
    else {
        if(y > z) Max = y;
        else Max = z;
    }
    cout << "Самое большое число - " << Max << endl;
    
    cout << "Способ №2" << endl;
    if(x > y && x > z) Max = x;
    if(y > x && y > z) Max = y;
    else Max = z; 
    cout << "Самое большое число - " << Max << endl; 
 
 
    cout << "Способ №3" << endl;
    if(x > y) Max = x;
    else Max = y;
    if(Max < z) Max = z;
    cout << "Самое большое число - " << Max << endl;
 
 
    cout << "Способ №4" << endl;
    Max = (x > y)? x : y;
    Max = (Max > z)? Max : z; 
    cout << "Самое большое число - " << Max << endl;
 
 
    system('pause');
    return 0;
}
У меня вопрос по четвертому способу, можно ли записать это в одно выражение и если можно то как?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2013, 18:42     Сравнение 3 чисел
Посмотрите здесь:

Сравнение чисел. C++
C++ Сравнение двух чисел
Сравнение чисел C++
C++ Сравнение рациональных чисел
Сравнение чисел C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
katsidelin
 Аватар для katsidelin
60 / 21 / 2
Регистрация: 15.11.2013
Сообщений: 112
Записей в блоге: 3
24.12.2013, 18:57     Сравнение 3 чисел #2
Второй способ не катит.
Проверь алгоритм.
xoror
 Аватар для xoror
29 / 31 / 2
Регистрация: 15.12.2013
Сообщений: 147
24.12.2013, 18:57     Сравнение 3 чисел #3
В одно выражение
C++
1
Max = max( x, max(y,z) );
max(a,b) - встроенная функция. Возвращает максимальное число из a и b
Donet
 Аватар для Donet
21 / 21 / 2
Регистрация: 19.11.2013
Сообщений: 74
24.12.2013, 19:00     Сравнение 3 чисел #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    cout << "Способ №5" << endl;
    switch ( x > y ) {
    case 1:
        Max = x;
      break;
    case 0:
        Max = y;
      break;
    }
    switch ( Max < z ) {
    case 1:
        Max = z;
      break;
    case 0:
      break;
    } 
    cout << "Самое большое число - " << Max << endl;
katsidelin
 Аватар для katsidelin
60 / 21 / 2
Регистрация: 15.11.2013
Сообщений: 112
Записей в блоге: 3
24.12.2013, 19:02     Сравнение 3 чисел #5
По сабжу:

C++
1
2
3
    cout << "Способ №4" << endl;
    Max = (x > y)? ( (x > z)? x : z ) : ( (y > z)? y : z );
    cout << "Самое большое число - " << Max << endl;
Donet
 Аватар для Donet
21 / 21 / 2
Регистрация: 19.11.2013
Сообщений: 74
24.12.2013, 19:08     Сравнение 3 чисел #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
    cout << "Способ №6" << endl;
    switch ( x > y ) {
    case 1:
        switch ( x > z ) {
        case 1:
            Max = x;
          break;
        case 0:
            Max = z;
          break;
        }
      break;
    case 0:
        switch ( y > z ) {
        case 1:
            Max = y;
          break;
        case 0:
            Max = z;
          break;
        }
      break;
    } 
    cout << "Самое большое число - " << Max << endl;
katsidelin
 Аватар для katsidelin
60 / 21 / 2
Регистрация: 15.11.2013
Сообщений: 112
Записей в блоге: 3
24.12.2013, 19:08     Сравнение 3 чисел #7
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
// [url]http://www.cyberforum.ru/cpp-beginners/thread1055154.html[/url]
/*
 *   Всем привет))
 *   В колледже задали задание: написать программу, которая сравнивает 3 числа. Три варианта я сделал:
 */
 
#include <iostream>
using namespace std;
 
int main() {
    int x, y, z, Max;
 
    cout << "Введите число x: ";
    cin >> x;
    cout << endl << "Введите число y: ";
    cin >> y;
    cout << endl << "Введите число z: ";
    cin >> z;
 
    cout << "Способ №1" << endl;
    if(x > y) {
        if(x > z) Max = x;
        else Max = z;
    }
    else {
        if(y > z) Max = y;
        else Max = z;
    }
    cout << "Самое большое число - " << Max << endl;
 
    cout << "Способ №2" << endl; // Исправлено!
    if(x > y && x > z)
    {
        Max = x;
    }
    else if (x > y && x < z)
    {
        Max =z;
    }
    else if(y > x && y > z)
    {
        Max = y;
    }
    else Max = z;
    cout << "Самое большое число - " << Max << endl;
 
 
    cout << "Способ №3" << endl;
    if(x > y) Max = x;
    else Max = y;
    if(Max < z) Max = z;
    cout << "Самое большое число - " << Max << endl;
 
 
    cout << "Способ №4" << endl; // Исправлено!
    Max = (x > y)? ( (x > z)? x : z ) : ( (y > z)? y : z );
    cout << "Самое большое число - " << Max << endl;
 
 
//    system('pause'); // У меня нет такого метода.
    return 0;
}
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
24.12.2013, 19:08     Сравнение 3 чисел #8
4-м способом:
C++
1
Max = (Max = x > y ? x : y) > z ? Max : z;
Вариант с std::max в C++11:
C++
1
Max = std::max({a, b, c});
C_T_A_P_M_E_X
2 / 2 / 0
Регистрация: 12.10.2012
Сообщений: 10
24.12.2013, 20:05  [ТС]     Сравнение 3 чисел #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
#include <iostream>
using namespace std;
 
int main() {
    setlocale(LC_ALL, "Russian");
    int x, y, z, Max;
 
    cout << "Введите число x: ";
    cin >> x;
    cout << endl << "Введите число y: ";
    cin >> y; 
    cout << endl << "Введите число z: ";
    cin >> z;
    
    cout << "\nСпособ №1";
    if(x > y) {
        if(x > z) Max = x;
        else Max = z;
    }
    else {
        if(y > z) Max = y;
        else Max = z;
    }
    cout << "\nСамое большое число - " << Max << endl;
    
    cout << "\nСпособ №2";
    if(x > y && x > z) Max = x;
    if(y > x && y > z) Max = y;
    if(z > x && z > y) Max = z; 
    cout << "\nСамое большое число - " << Max << endl; 
 
 
    cout << "\nСпособ №3";
    if(x > y) Max = x;
    else Max = y;
    if(Max < z) Max = z;
    cout << "\nСамое большое число - " << Max << endl;
 
 
    cout << "\nСпособ №4";
    Max = (x > y)? x : y;
    Max = (Max > z)? Max : z; 
    cout << "\nСамое большое число - " << Max << endl;
 
    cout << "\nСпособ №5";
    switch (x > y) {
    case 1:
        Max = x;
        break;
    case 0:
        Max = y;
      break;
    }
    switch (Max < z) {
        case 1: Max = z;
        break;
        case 0: break;
    } 
    cout << "\nСамое большое число - " << Max << endl;
 
    cout << "\nСпособ №6";
    switch (x > y) {
    case 1: switch (x > z) {
            case 1: Max = x;
            break;
            case 0: Max = z;
            break;
    }
    break;
    case 0: switch ( y > z ) {
            case 1: Max = y;
            break;
            case 0: Max = z;
            break;
    }
    break;
    } 
    cout << "\nСамое большое число - " << Max << endl;
 
    system("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2013, 20:52     Сравнение 3 чисел
Еще ссылки по теме:

C++ Сравнение чисел
C++ Сравнение длинных чисел >, <
C++ Поразрядное сравнение чисел

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

Или воспользуйтесь поиском по форуму:
Donet
 Аватар для Donet
21 / 21 / 2
Регистрация: 19.11.2013
Сообщений: 74
24.12.2013, 20:52     Сравнение 3 чисел #10
Я рад что мои варианты подошли...
Yandex
Объявления
24.12.2013, 20:52     Сравнение 3 чисел
Ответ Создать тему
Опции темы

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