Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Pedro_17
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 50
1

Как сделать чтобы Switch работал в другом Switch'e?

27.05.2012, 10:40. Просмотров 849. Ответов 13
Метки нет (Все метки)

Как сделать что бы Switch работал в другом Switch'e? Вот допустим выбираем один пункт и в зависимости от выбранного нами пункта последующие для других будут разными. Вот программа, скажите что исправить.
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
85
86
87
88
89
90
91
92
93
#include<stdio.h>
#include<conio.h>
int main ()
{
    char x, y, n, q;
 
    printf("\na-test1\nb-test2\nc-test3\n");
    fflush(stdin);
    scanf("%c",&x);
    switch (x)
    {
        case 'a':
 
                printf("\ntest1\nviberite dalee\nw-test4\ne-test5\nr-test6\n");
                fflush(stdin);
                scanf("%f",&y);
                switch (y)
                {
                    case 'w':
 
                            printf("test4\n");
 
 
                    case 'e':
 
                            printf("test5\n");
 
 
                    case 'r':
 
                            printf("test6\n");
 
 
 
 
                }
 
        case 'b':
 
                printf("\ntest2\nviberite dalee\nt-test7\nu-test8\ni-test9\n");
                fflush(stdin);
                scanf("%f",&n);
                switch (n)
                {
                    case 't':
 
                            printf("test7\n");
 
 
                    case 'u':
 
                            printf("test8\n");
 
 
                    case 'i':
 
                            printf("test9\n");
 
 
 
 
                }
 
        case 'c':
 
                printf("\ntest3\nviberite dalee\no-test10\np-test11\ns-test12\n");
                fflush(stdin);
                scanf("%f",&q);
                switch (q)
                {
                    case 'o':
 
                            printf("test10\n");
 
 
                    case 'p':
 
                            printf("test11\n");
 
 
                    case 's':
 
                            printf("test12\n");
 
 
 
 
                }
 
 
 
    }
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2012, 10:40
Ответы с готовыми решениями:

Как сделать, чтобы random работал в нескольких диапазонах?
Нужно отобразить в одном массиве цифры и буквы в случайном порядке и потом использывать группировку...

Выбор: Как сделать, чтобы switch выполнялся только при выборе от 1 до 3-х?
Добрый вечер! Как сделать чтобы при выборе от 1 до 3-х, switch выполнялся, а в любых других...

Как сделать чтобы switch работал для char??
Задача: вводим комманду в консоли (чаровский массив\строку слово кароче) далее по введённой...

Как сделать, чтобы switch работал как цикл?
Как сделать что бы switch работал как цикл ? Ну то есть: switch (n) case 1:break; {newfile1 ();...

Как сделать, чтобы работал .htaccess на localhost?
Добрый день! У меня не работает .htaccess на localhost. Хочу сделать банальный редирект, чтобы...

13
StalkerSmerch
1 / 1 / 2
Регистрация: 04.03.2012
Сообщений: 159
27.05.2012, 12:10 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Разве не должен стоять break в каждом case?
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include<stdio.h>
#include<conio.h>
int main ()
{
    char x, y, n, q;
 
    printf("\na-test1\nb-test2\nc-test3\n");
    fflush(stdin);
    scanf("%c",&x);
    switch (x)
    {
        case 'a':
 
                printf("\ntest1\nviberite dalee\nw-test4\ne-test5\nr-test6\n");
                fflush(stdin);
                scanf("%f",&y);
                switch (y)
                {
                    case 'w':{
 
                            printf("test4\n");
                     break;
                    }
 
                    case 'e':{
 
                            printf("test5\n");
                     break;
                    }
 
 
                    case 'r':{
 
                            printf("test6\n");
                     break;
                    }
 
                }
                break;
 
        case 'b':{
 
                printf("\ntest2\nviberite dalee\nt-test7\nu-test8\ni-test9\n");
                fflush(stdin);
                scanf("%f",&n);
                switch (n)
                {
                    case 't':{
 
                            printf("test7\n");
                            break;
                    }
 
 
                    case 'u':{
 
                            printf("test8\n");
                            break;
                }
 
                    case 'i':{
 
                            printf("test9\n");
                            break;
                }
 
 
 
 
                }
                break;
        }
 
        case 'c':{
 
                printf("\ntest3\nviberite dalee\no-test10\np-test11\ns-test12\n");
                fflush(stdin);
                scanf("%f",&q);
                switch (q)
                {
                    case 'o':{
 
                            printf("test10\n");
                            break;
                    }
 
 
                    case 'p':{
 
                            printf("test11\n");
break;
                    }
 
                    case 's':{
 
                            printf("test12\n");
                            break;
                    }
 
 
 
 
                }
                break;
        }
 
 
 
    }
}
Вот вроде работает
0
Pedro_17
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 50
27.05.2012, 12:49  [ТС] 3
Не всё работает, вот допустим выбираю test3, потом test12 и он не выводит текст.
0
StalkerSmerch
1 / 1 / 2
Регистрация: 04.03.2012
Сообщений: 159
27.05.2012, 12:59 4
А что он должен выводить?
Первое меню?
0
Pedro_17
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 50
27.05.2012, 13:32  [ТС] 5
Цитата Сообщение от StalkerSmerch Посмотреть сообщение
А что он должен выводить?
Первое меню?
Нет, там же стоит printf, текст должен вывести
0
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
27.05.2012, 13:51 6
Цитата Сообщение от Pedro_17 Посмотреть сообщение
fflush(stdin);
Так не пишут.
0
StalkerSmerch
1 / 1 / 2
Регистрация: 04.03.2012
Сообщений: 159
27.05.2012, 13:56 7
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

go, так пишут, но только если идёт 2 scanf.
Всё нашёл ошибку, вы когда сканф делаете проверяете по float, а не по char.
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include<stdio.h>
#include<conio.h>
int main ()
{
    char x, y, n, q;
 
    printf("\na-test1\nb-test2\nc-test3\n");
    fflush(stdin);
    scanf("%c",&x);
    switch (x)
    {
        case 'a':{
 
                printf("\ntest1\nviberite dalee\nw-test4\ne-test5\nr-test6\n");
                fflush(stdin);
                scanf("%c",&y);
                switch (y)
                {
                    case 'w':{
 
                            printf("test4\n");
                            break;
                    }
 
                    case 'e':{
 
                            printf("test5\n");
                     break;
                    }
 
 
                    case 'r':{
 
                            printf("test6\n");
                     break;
                    }
 
                }
                break;
        }
 
        case 'b':{
 
                printf("\ntest2\nviberite dalee\nt-test7\nu-test8\ni-test9\n");
                fflush(stdin);
                scanf("%c",&n);
                switch (n)
                {
                    case 't':{
 
                            printf("test7\n");
                            break;
                    }
 
 
                    case 'u':{
 
                            printf("test8\n");
                            break;
                }
 
                    case 'i':{
 
                            printf("test9\n");
                            break;
                }
 
 
 
 
                }
                break;
        }
 
        case 'c':{
 
                printf("\ntest3\nviberite dalee\no-test10\np-test11\ns-test12\n");
                fflush(stdin);
                scanf("%c",&q);
                switch (q)
                {
                    case 'o':{
 
                            printf("test10\n");
                            break;
                    }
 
 
                    case 'p':{
 
                            printf("test11\n");
break;
                    }
 
                    case 's':{
 
                            printf("test12\n");
                            break;
                    }
 
                }
                break;
        }
 
 
 
    }
}
0
Pedro_17
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 50
27.05.2012, 14:06  [ТС] 8
Спасибо.
0
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
27.05.2012, 14:10 9
Цитата Сообщение от StalkerSmerch Посмотреть сообщение
go, так пишут, но только если идёт 2 scanf.
Нет, так не пишут никогда.
0
StalkerSmerch
1 / 1 / 2
Регистрация: 04.03.2012
Сообщений: 159
27.05.2012, 14:13 10
go, не знаю не знаю. Я когда на борланде писал там надо было писать это, если да сканф подряд идут, так как буфер заполнен был.
0
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
27.05.2012, 14:20 11
Цитата Сообщение от StalkerSmerch Посмотреть сообщение
go, не знаю не знаю. Я когда на борланде писал там надо было писать это, если да сканф подряд идут, так как буфер заполнен был.
Это undefined behavior.
0
silent_1991
Эксперт С++
5013 / 3073 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
Завершенные тесты: 1
29.05.2012, 19:29 12
StalkerSmerch, скорее всего, вы путаете с stdout. О каком буфере речь в потоке ввода? Если ввод будет буферизироваться, как вы представляете работу программы, которая зависит от входных данных?
0
StalkerSmerch
1 / 1 / 2
Регистрация: 04.03.2012
Сообщений: 159
29.05.2012, 22:02 13
silent_1991, Просто мне так преподаватель объяснял. Я да же у одногруппников спросил. Они то же самое ответили. Кстати, если всё таки я не прав, то за что эта команда отвечает?(Так на будущее)
0
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
29.05.2012, 22:26 14
Flush stream
If the given stream was open for writing and the last i/o operation was an output operation, any unwritten data in the output buffer is written to the file.
If it was open for reading and the last operation was an input operation, the behavior depends on the specific library implementation. In some implementations this causes the input buffer to be cleared, but this is not standard behavior.
If the argument is a null pointer, all open files are flushed.
The stream remains open after this call.
When a file is closed, either because of a call to fclose or because the program terminates, all the buffers associated with it are automatically flushed.
http://www.cplusplus.com/reference/clibrary/cstdio/fflush/
0
29.05.2012, 22:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2012, 22:26

Как сделать чтобы javascript работал в Битрикс?
вставил в обертку тегов джаваскрипт именно в битрикс редактировании компонентов - &lt;SCRIPT...

Как сделать чтобы работал поиск в select
Привет! помогите пожалуйста решить задачу, мне нужно сделать поиск в селекте вот пример кода ...

Как сделать чтобы работал Combo Box?
Имеется две таблицы нужно в одной поставить выпадающий список. Установил ComboBox на форму через...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

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