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

Вопрос по оператору switch - C++

Восстановить пароль Регистрация
 
vpnwz151
 Аватар для vpnwz151
10 / 11 / 1
Регистрация: 03.11.2011
Сообщений: 129
11.11.2011, 16:59     Вопрос по оператору switch #1
Задача звучит так
Даны три числа. Вывести наибольшее из них.
правельно ли сложен код? Можно ли написать это все в операторе switch если да то как?
зарание спасибо
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
void main()
 
{
    int a, b, c;
 
    cout<<"digit: ";
    cin>>a;
    cout<<"digit 2: ";
    cin>>b;
    cout<<"digit 3: ";
    cin>>c;
    
    if (a > b && a > c)
        cout<<a<<endl;
    else if (b > a && b > c)
        cout<<b<<endl;
    else if (c > a && c > b)
        cout<<c<<endl;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2011, 16:59     Вопрос по оператору switch
Посмотрите здесь:

Вопрос по оператору cin C++
C++ вопрос по switch
C++ Вопрос по оператору For
C++ Вопрос по Switch
C++ Скажите есть ли в с++ альтернатива оператору case в pascal
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
11.11.2011, 17:13     Вопрос по оператору switch #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
27
28
29
30
#include <iostream>
using namespace std;
int main() {
    int a, b, c;
 
    cout<<"digit 1: ";
    cin>>a;
    cout<<"digit 2: ";
    cin>>b;
    cout<<"digit 3: ";
    cin>>c;
 
    switch(a > b && a > c) {
    case true:
        cout<<a<<endl;
        break;
    case false:
        switch(b > a && b > c) {
        case true:
            cout<<b<<endl;
            break;
        case false:
            cout<<c<<endl;
            break;
        }
        break;
    }
 
    return 0;
}
Dar101
 Аватар для Dar101
40 / 40 / 1
Регистрация: 12.05.2011
Сообщений: 109
11.11.2011, 17:16     Вопрос по оператору switch #3
Можно, пример выше, но мне кажется switch предназначен немного для других целей.
Код правильный, можно только чуть-чуть упростить последний else if, там проверять лог условие ни к чему. Ясно, что если наибольшее число не a и не b, то это c:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
void main()
 
{
        int a, b, c;
 
        cout<<"digit: ";
        cin>>a;
        cout<<"digit 2: ";
        cin>>b;
        cout<<"digit 3: ";
        cin>>c;
        
        if (a > b && a > c) cout<<a<<endl;
        else if (b > a && b > c) cout<<b<<endl;
        else cout<<c<<endl;
}
Abendstern
3 / 3 / 0
Регистрация: 06.11.2011
Сообщений: 38
11.11.2011, 17:19     Вопрос по оператору switch #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
#include <iostream>
 
int max(int x, int y)
{
    return x > y ? x : y;
}
 
int main()
{
    int a, b, c;
 
    std::cout << "digit 1: ";
    std::cin >> a;
    std::cout << "digit 2: ";
    std::cin >> b;
    std::cout << "digit 3: ";
    std::cin >> c;
 
    std::cout << max(a, max(b, c)) << "\n";
 
    system("pause");
    return 0;
}
А вот switch по-моему тут не к месту
vpnwz151
 Аватар для vpnwz151
10 / 11 / 1
Регистрация: 03.11.2011
Сообщений: 129
11.11.2011, 17:29  [ТС]     Вопрос по оператору switch #5
Спасибо за помощь

Возник еще один вопросик задача состоит так
Даны три числа. Найти количество четных среди них.
как реализовать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
void main()
 
{
        int a, b, c;
 
        cout<<"digit: ";
        cin>>a;
        cout<<"digit 2: ";
        cin>>b;
        cout<<"digit 3: ";
        cin>>c;
        
......    //пример кода дальше сам разберусь спасибо!
 
}
И можно более детально описать роботу оператора Switch
GhostVIRUS
 Аватар для GhostVIRUS
6 / 6 / 0
Регистрация: 17.09.2011
Сообщений: 81
11.11.2011, 17:34     Вопрос по оператору switch #6
Можно сделать проверяя остаток от целочисленного деления на 2.
C++
1
2
if(a%2 == 0)
    n++;
и так далее...
vpnwz151
 Аватар для vpnwz151
10 / 11 / 1
Регистрация: 03.11.2011
Сообщений: 129
11.11.2011, 17:45  [ТС]     Вопрос по оператору switch #7
C++
1
2
   if(a%2 == 0)
    n++; //как понять?
GhostVIRUS
 Аватар для GhostVIRUS
6 / 6 / 0
Регистрация: 17.09.2011
Сообщений: 81
11.11.2011, 17:46     Вопрос по оператору switch #8
C++
1
n++; // тоже самое что и n = n + 1;
vpnwz151
 Аватар для vpnwz151
10 / 11 / 1
Регистрация: 03.11.2011
Сообщений: 129
11.11.2011, 17:49  [ТС]     Вопрос по оператору switch #9
это я понял сможеш пример кусок скинуть а то что-то я не понимаю

C++
1
2
3
4
5
6
7
8
9
10
11
     int a, b, c;
 
        cout<<"digit: ";
        cin>>a;
        cout<<"digit 2: ";
        cin>>b;
        cout<<"digit 3: ";
        cin>>c;
 
        if(a % 2 == 0)
            n++; // просто не могу понять откуда она взялась
Как дальше оформить то?
Dar101
 Аватар для Dar101
40 / 40 / 1
Регистрация: 12.05.2011
Сообщений: 109
11.11.2011, 17:56     Вопрос по оператору switch #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
   int a, b, c;
   cout<<"digit: ";
   cin>>a;
   cout<<"digit 2: ";
   cin>>b;
   cout<<"digit 3: ";
   cin>>c;
   int n = 0; //число четных чисел
   if(a % 2 == 0)  n++;
   if(b % 2 == 0)  n++;
   if(c % 2 == 0)  n++;
   cout<<"count of even numbers:"<<n;
Чтобы много раз не писать одни и те же действия как тут:
C++
1
2
3
   if(a % 2 == 0)  n++;
   if(b % 2 == 0)  n++;
   if(c % 2 == 0)  n++;
можно использовать массив int.
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
11.11.2011, 17:58     Вопрос по оператору switch #11
Цитата Сообщение от vpnwz151 Посмотреть сообщение
И можно более детально описать роботу оператора Switch
C++
1
2
3
4
5
6
7
8
9
10
switch(aaaa){
case 1:     // если aaaa равно 1 
    .....     // делаем что нам надо.
    break; // прерываем выполнение switch потому что нет смысла проверять другие условия
case 2:     // если aaaa равно 2 
    .....     // делаем что нам надо.
    break; // прерываем выполнение switch потому что нет смысла проверять другие условия
default;   // выполняется в случае если не один из case не подходит.
    break;
}
vpnwz151
 Аватар для vpnwz151
10 / 11 / 1
Регистрация: 03.11.2011
Сообщений: 129
11.11.2011, 18:01  [ТС]     Вопрос по оператору switch #12
[QUOTE=Dar101;2159850]
C++
1
2
3
4
5
 
   int n = 0; //число четных чисел
   if(a % 2 == 0)  n++;   <-  это
   if(b % 2 == 0)  n++;
   if(c % 2 == 0)  n++;

можешь объяснить как оно работает!

Спасибо за помощь!
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
11.11.2011, 18:06     Вопрос по оператору switch #13
Цитата Сообщение от vpnwz151 Посмотреть сообщение
можешь объяснить как оно работает!
C++
1
 if(a % 2 == 0)  n++;   <-  это
если остаток от деления a на 2 равен нулю прибавляем к n единицу.

p.s. если остаток от деления a на 2 равен нулю то число четное.
например
4%2 = 0
5%2 = 1
GhostVIRUS
 Аватар для GhostVIRUS
6 / 6 / 0
Регистрация: 17.09.2011
Сообщений: 81
11.11.2011, 20:21     Вопрос по оператору switch #14
Что мешает переделать?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2011, 20:38     Вопрос по оператору switch
Еще ссылки по теме:

C++ Обращение к перегруженному оператору () через указатель на объект
Операторы эквивалентные оператору присваивания\условному оператору? C++
Простой пример по оператору ? C++

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

Или воспользуйтесь поиском по форуму:
vpnwz151
 Аватар для vpnwz151
10 / 11 / 1
Регистрация: 03.11.2011
Сообщений: 129
11.11.2011, 20:38  [ТС]     Вопрос по оператору switch #15
Всем спасибо большое!
Yandex
Объявления
11.11.2011, 20:38     Вопрос по оператору switch
Ответ Создать тему
Опции темы

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