Как сделать чтобы Switch работал в другом Switch'e? - C (СИ)
Формулировка задачи:
Как сделать что бы Switch работал в другом Switch'e? Вот допустим выбираем один пункт и в зависимости от выбранного нами пункта последующие для других будут разными. Вот программа, скажите что исправить.
#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");
}
}
}Решение задачи: «Как сделать чтобы Switch работал в другом Switch'e?»
textual
Листинг программы
#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;
}
}
}
Объяснение кода листинга программы
- Вводная часть кода содержит объявление переменных
x,y,n,qтипаchar. - Затем с помощью функции
printfвыводится три строки для выбора:a-test1/b-test2/c-test3. - Далее, с помощью функции
scanfв переменнуюxсчитывается символ, который является меткой для вложенного оператора switch. - В зависимости от значения переменной
xвыводится соответствующий результат:- Если 'a', то выводится
test1, после чего считывается символ в переменнуюy. В зависимости от значения переменнойyвыводится соответствующий результат:- Если 'w', то выводится
test4. - Если 'e', то выводится
test5. - Если 'r', то выводится
test6.
- Если 'w', то выводится
- Если 'b', то выводится
test2, после чего считывается символ в переменнуюn. В зависимости от значения переменнойnвыводится соответствующий результат:- Если 't', то выводится
test7. - Если 'u', то выводится
test8. - Если 'i', то выводится
test9.
- Если 't', то выводится
- Если 'c', то выводится
test3, после чего считывается символ в переменнуюq. В зависимости от значения переменнойqвыводится соответствующий результат:- Если 'o', то выводится
test10. - Если 'p', то выводится
test11. - Если 's', то выводится
test12.
- Если 'o', то выводится
- Если 'a', то выводится
- Код не содержит обработку ошибок и проверку корректности вводимых пользователем данных.