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

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

Восстановить пароль Регистрация
 
booogabooo
5 / 1 / 0
Регистрация: 04.12.2013
Сообщений: 50
27.01.2014, 02:52     Не срабатывает switch #1
Не работает в коде свитч. При проверке значения, должна выполняться функция, а она не выполняется... В чем проблема?
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;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2014, 02:52     Не срабатывает switch
Посмотрите здесь:

C++ switch
C++ Switch C++
Switch C++
switch C++
C++ Switch
C++ Switch
C++ switch
C++ if в switch
Switch C++
Неполадка с default в switch-case - вывод срабатывает дважды C++
В операторе switch всегда срабатывает default C++
C++ Switch

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cooller
 Аватар для cooller
564 / 532 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
27.01.2014, 03:09     Не срабатывает switch #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
booogabooo, стандарт C++ не допускает применения операторов switch-case к строковым константам. Но с С++ 11 можно выкрутиться.
Читай тут
vovacreme
-16 / 61 / 13
Регистрация: 14.01.2014
Сообщений: 145
27.01.2014, 03:11     Не срабатывает switch #3
Потому-что 'Mon' и 'Tues' не являются константными символами. Смени на 'M' и 'T' и будет ок
gray_fox
What a waste!
 Аватар для gray_fox
1246 / 1129 / 54
Регистрация: 21.04.2012
Сообщений: 2,354
Завершенные тесты: 3
27.01.2014, 03:18     Не срабатывает switch #4
Цитата Сообщение от vovacreme Посмотреть сообщение
Потому-что 'Mon' и 'Tues' не являются константными символами. Смени на 'M' и 'T' и будет ок
И как тогда различить tuesday и thursday? )
vovacreme
-16 / 61 / 13
Регистрация: 14.01.2014
Сообщений: 145
27.01.2014, 03:44     Не срабатывает switch #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;
    }
cooller
 Аватар для cooller
564 / 532 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
27.01.2014, 04:03     Не срабатывает switch #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;
}
Yandex
Объявления
27.01.2014, 04:03     Не срабатывает switch
Ответ Создать тему
Опции темы

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