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

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

Войти
Регистрация
Восстановить пароль
 
booogabooo
5 / 1 / 0
Регистрация: 04.12.2013
Сообщений: 50
#1

Не срабатывает switch - C++

27.01.2014, 02:52. Просмотров 276. Ответов 5
Метки нет (Все метки)

Не работает в коде свитч. При проверке значения, должна выполняться функция, а она не выполняется... В чем проблема?
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
#include <stdio.h>
#include <iomanip>
 
 
void monday(char mon[])
{
    printf("%s\n", mon);
    printf("1 --- Высшая математика --- 407ЛК\n2 --- Грамматика        --- 407ЛК\n");
    printf("3 --- Физкультура       --- МАНЕЖ\n4 --- Философия         --- 406ЛК\n");
}
void tuesday(char mon[])
{
    printf("%s\n", mon);
    printf("1 --- Инженерная графика     --- 255ГК\n2 --- Теоретическая механика --- 314МК\n");
    printf("3 --- Инженерная графика     --- 307ГК\n4 --- Декан час              --- 210ЛК\n");
}
void wednesday(char mon[])
{
    printf("%s\n", mon);
    printf("1 --- История укр. культуры --- 429ГК\n2 --- Философия             --- 345ГК\n");
    printf("3 --- Информатика           --- 203РК\n4 --- Грамматика            --- 406ЛК\n");
}
void thursday(char mon[])
{
    printf("%s\n", mon);
    printf("1 --- Физика                 --- 416РК\n2 --- Физика                 --- 416РК\n");
    printf("3 --- Теоретическая механика --- 310МК\n4 --- Разговорная практика   --- 409ЛК\n");
}
void friday(char mon[])
{
    printf("%s\n", mon);
    printf("1 --- Инженерная графика --- 256ГК\n2 --- Высшая математика  --- 412ГК\n");
    printf("3 --- Физкультура        --- МАНЕЖ\n");
}
 
int main()
{
    setlocale(LC_ALL, "RUSSIAN");
    char day1[] = "Today is MONDAY\n";
    char day2[] = "Today is TUESDAY\n";
    char day3[] = "Today is WEDNESDAY\n";
    char day4[] = "Today is THURSDAY\n";
    char day5[] = "Today is FRIDAY\n";
 
    char check[10];
    fgets(check, sizeof(check), stdin);
    switch(check[0])
    {
        case 'Mon' : monday(day1);
        case 'Tues': tuesday(day2); break;
    }
    
    /*monday(day1);
    tuesday(day2);
    wednesday(day3);
    thursday(day4);
    friday(day5);*/
    
    
    return 0;
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2014, 02:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не срабатывает switch (C++):

В операторе switch всегда срабатывает default - C++
Привет всем, вот такая проблема ввожу указанные в case буквы, в любом случий срабатывает default, почему так? #define WINVER 0x0501 ...

Неполадка с default в switch-case - вывод срабатывает дважды - C++
Здравствуйте! Такая вот ерундовая проблема, но хотелось бы узнать почему происходит именно так =) Есть функция, проверяющая...

Оптимальная конструкция switch-case-while / while-switch-case - C++
Имеется конструкция типа: switch() { case 1: while() { ... }

Switch case внутри switch case - C++
Привет всем! Нужна помощь. Пишу калькулятор с консольным меню. Так вот, используется цикл while, внутри которого у меня switch...

While{switch{switch{break;}}} break выходит из while - C++
В общем необходимо конструкцию switch запускать в цикле, в каждом case X: стоит свой break;, да бы выполнился один case, а не все. Проблема...

switch - C++
swith(n) { case 1: { return 0; // Надо ли в этом случае писать break ? // В каких случаях работа будет нарушена ? } }

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
27.01.2014, 03:09 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
booogabooo, стандарт C++ не допускает применения операторов switch-case к строковым константам. Но с С++ 11 можно выкрутиться.
Читай тут
1
vovacreme
-16 / 61 / 13
Регистрация: 14.01.2014
Сообщений: 145
27.01.2014, 03:11 #3
Потому-что 'Mon' и 'Tues' не являются константными символами. Смени на 'M' и 'T' и будет ок
1
gray_fox
What a waste!
1520 / 1223 / 70
Регистрация: 21.04.2012
Сообщений: 2,560
Завершенные тесты: 3
27.01.2014, 03:18 #4
Цитата Сообщение от vovacreme Посмотреть сообщение
Потому-что 'Mon' и 'Tues' не являются константными символами. Смени на 'M' и 'T' и будет ок
И как тогда различить tuesday и thursday? )
0
vovacreme
-16 / 61 / 13
Регистрация: 14.01.2014
Сообщений: 145
27.01.2014, 03:44 #5
Цитата Сообщение от gray_fox Посмотреть сообщение
И как тогда различить tuesday и thursday? )
Использовать условный оператор условный оператор if - else)

Добавлено через 7 минут
Можно еще так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
switch(check[0])
    {
        case 'M' : monday(day1);
            break;
        case 'T': 
            switch(check[1])
            {
                case 'u' : tuesday(day2);
                    break;
                case 'h' : thursday(day4);
                    break;
            }
            break;
    }
1
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
27.01.2014, 04:03 #6
booogabooo, Можно еще все это дело закинуть в enum
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
enum DAY {Monday = 1,Tuesday = 2};
int main()
{
    setlocale(LC_ALL, "RUSSIAN");
    char day1[] = "Today is MONDAY\n";
    char day2[] = "Today is TUESDAY\n";
    char day3[] = "Today is WEDNESDAY\n";
    char day4[] = "Today is THURSDAY\n";
    char day5[] = "Today is FRIDAY\n";
 
    int day;
    std::cin>>day;
    switch (day)
    {
        case Monday : monday(day1);
        break;
        case Tuesday : tuesday(day2);
        break;
    }
 
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2014, 04:03
Привет! Вот еще темы с ответами:

switch - C++
switch (k) { case 1 : printf(rus(&quot;Выход\n&quot;)); break; case 2 : printf(rus(&quot;Загрузить\n&quot;)); break; case 3 :...

switch - C++
5. как пользоваться switch()

Switch - C++
Ошибка в 19 строке: n cannot appear in a constant-expression (потому что n это переменная?). #include &lt;iostream&gt; #include &lt;math.h&gt; ...

Switch - C++
Простите за глупый вопрос, но можно ли в switch работать с действительными числами и если да то как?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.01.2014, 04:03
Ответ Создать тему
Опции темы

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