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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
klpff
0 / 0 / 0
Регистрация: 10.05.2015
Сообщений: 14
#1

Switch case внутри switch case - C++

10.05.2015, 18:07. Просмотров 2321. Ответов 16
Метки нет (Все метки)

Привет всем!
Нужна помощь.
Пишу калькулятор с консольным меню.
Так вот, используется цикл while, внутри которого у меня switch case. Можно ли в уже имеющийся switch case засунуть еще один switch case? Если да, то можно рабочий пример? Был бы очень благодарен.
Вот типа такого:
P.S. Извеняйте, если вопрос глупый, учусь
C++
1
2
3
    printf ("1.Калькулятор\n");
    printf ("2.Помощь в работе с программой\n");
    printf ("3.О рабзработчике\n");
и т.д..............
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    while(1)
    {
    scanf_s ("%i", &deystvie);
    switch (deystvie)
      {
        case 1 : printf("-----Калькулятор-----\n ");
                 printf("Выберите нужное действие:\n ");
                 printf("1.Сложение\n ");
                 printf("2.Вычитание\n ");
                и т.д...........
                 scanf_s ("%i", &deystvie2);
                 switch(deystvie2)
                 {
                 case 1:  printf("-------Сложение-------");
                         и т.д...............
                 }
        case 2 : printf("test.\n ");break;
        case 3 : printf("test.\n ");break;
        default: printf("Выбрано неверное действие.\n");break;
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2015, 18:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Switch case внутри switch case (C++):

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

switch-case, как писать в самом case - C++
Такс дело вот в чём,прога работает всё хорошо,вот только мне не нравится как записваю страны в кейсе,можно ли каким-нибудь образом писать в...

Внутри switch ошибка Case bypasses initialization of a local variable - C++
Компилятор не устраивает case 3, там ввод массива автоматически , в чем ошибка подскажите Ошибку пишет Case bypasses initialization of a...

Switch + case - C++
Суть задания: Задан шифр книги из библиотеки в виде шестизначного целого числа. Определить к какому подразделу ...

Switch - case - C++
Доброго времени суток. Сделал меню по такой схеме: switch(a) { case 1: { case 1: case 2: switch(aa) ...

switch case - C++
как в блок-схеме изображается switch case?

16
ValeryS
Модератор
6785 / 5193 / 497
Регистрация: 14.02.2011
Сообщений: 17,431
10.05.2015, 18:30 #2
Цитата Сообщение от klpff Посмотреть сообщение
Можно ли в уже имеющийся switch case засунуть еще один switch case?
можно
Цитата Сообщение от klpff Посмотреть сообщение
Если да, то можно рабочий пример?
доведи свой пример до ума и будет тебе рабочий пример
по крайней мере я большого криминала не вижу
только с бряками разберись

Добавлено через 20 минут
еще что хотелось бы добавить
с таким подходом ты запутаешься в собственном коде
открой для себя функции
1
IrineK
Заблокирован
10.05.2015, 18:44 #3
Цитата Сообщение от klpff Посмотреть сообщение
О рабзработчике
А почему он "раб"? Так всё плохо?
0
klpff
0 / 0 / 0
Регистрация: 10.05.2015
Сообщений: 14
10.05.2015, 19:30  [ТС] #4
быстро писал, не заметил ошибку
0
MrGluck
Модератор
Эксперт CЭксперт С++
7524 / 4662 / 704
Регистрация: 29.11.2010
Сообщений: 12,733
10.05.2015, 22:49 #5
Вытащить вложенный switch-case в отдельную функцию и вызывать её. Так и разобраться проще в коде будет и отлаживать легче.
0
klpff
0 / 0 / 0
Регистрация: 10.05.2015
Сообщений: 14
11.05.2015, 02:02  [ТС] #6
Цитата Сообщение от MrGluck Посмотреть сообщение
Вытащить вложенный switch-case в отдельную функцию и вызывать её. Так и разобраться проще в коде будет и отлаживать легче.
MrGluck, Не могли бы набросать примерный код вызова отдельной функции? Был бы очень благодарен)
0
MrGluck
Модератор
Эксперт CЭксперт С++
7524 / 4662 / 704
Регистрация: 29.11.2010
Сообщений: 12,733
11.05.2015, 13:20 #7
Цитата Сообщение от klpff Посмотреть сообщение
Не могли бы набросать примерный код вызова отдельной функции?
Структуры. Найти самого старшего мужчину
Смотрите на метод Program::run.
0
klpff
0 / 0 / 0
Регистрация: 10.05.2015
Сообщений: 14
12.05.2015, 14:26  [ТС] #8
MrGluck, для меня сложно там что-то понять
Но все равно спасибо.
0
castaway
Эксперт С++
4920 / 3028 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
12.05.2015, 16:20 #9
Тут нет ничего сложного.
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
#include <iostream>
 
int main() {
    int i = 2;
    int j = 10;
 
    switch ( i ) {
        case 1:
            std::cout << 1 << std::endl;
            break;
 
        case 2:
            switch ( j ) {
                case 10:
                    std::cout << 10 << std::endl;
                    break;
 
                case 20:
                    std::cout << 20 << std::endl;
                    break;
 
                case 30:
                    std::cout << 30 << std::endl;
                    break;
            }
            break;
 
        case 3:
            std::cout << 3 << std::endl;
            break;
    }
}
0
klpff
0 / 0 / 0
Регистрация: 10.05.2015
Сообщений: 14
12.05.2015, 16:23  [ТС] #10
castaway, видел подобный пример, однако, мне не помогло. Не работает все равно.
0
castaway
Эксперт С++
4920 / 3028 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
12.05.2015, 16:28 #11
Ты спросил:
Цитата Сообщение от klpff Посмотреть сообщение
Можно ли в уже имеющийся switch case засунуть еще один switch case?
Можно.

Цитата Сообщение от klpff Посмотреть сообщение
Если да, то можно рабочий пример?
Мой пример рабочий.

Цитата Сообщение от klpff Посмотреть сообщение
Не работает все равно.
Что я сейчас должен тебе ответить?
0
klpff
0 / 0 / 0
Регистрация: 10.05.2015
Сообщений: 14
12.05.2015, 16:30  [ТС] #12
castaway, посмотри мой код, там все так?
0
castaway
Эксперт С++
4920 / 3028 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
12.05.2015, 16:36 #13
Это не код, это херня какая-то. Там нечего смотреть.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7524 / 4662 / 704
Регистрация: 29.11.2010
Сообщений: 12,733
12.05.2015, 16:39 #14
klpff, тот же пример, но с выделением внутреннего switch в функцию:
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
#include <iostream>
 
void foo(const int j) {
    switch ( j ) {
        case 10:
            std::cout << 10 << std::endl;
            break;
 
        case 20:
            std::cout << 20 << std::endl;
            break;
 
        case 30:
            std::cout << 30 << std::endl;
            break;
    }
}
 
int main() {
    int i = 2;
    int j = 10;
 
    switch ( i ) {
        case 1:
            std::cout << 1 << std::endl;
            break;
 
        case 2:
            foo(j);
            break;
 
        case 3:
            std::cout << 3 << std::endl;
            break;
    }
}
0
klpff
0 / 0 / 0
Регистрация: 10.05.2015
Сообщений: 14
12.05.2015, 16:41  [ТС] #15
castaway,
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
#include <stdio.h>
#include <conio.h>
#include <clocale>
int main()
{   setlocale (LC_ALL,"Russian");
    setlocale (LC_ALL,"rus");
 
    int deystvie;
    int deystvie2;
    double a, b, c, ans;
    printf ("----------Меню----------: \n");
    printf ("1.Калькулятор.\n");
    printf ("2.Помощь в работе с программой.\n");
    printf ("3.О разработчике.\n");
    printf ("Выберите действие:\n ");
    while(1)
    {
    scanf("%i",&deystvie);
    switch (deystvie)
      {
        case 1 : printf("-----Калькулятор-----\n ");
                 printf("Выберите нужное действие:\n ");
                 printf("1.Сложение.\n ");
                 printf("2.Вычитание.\n ");
                 printf("3.Умножение.\n ");
                 printf("4.Деление.\n ");
                 printf("5.Возведение в степень.\n ");
                 printf("6.Вычисление квадратного корня.\n ");
                 printf("7.Вычисление синуса.\n ");
                 printf("8.Вычисление косинуса.\n ");
                 printf("9.Вычисление тангенса.\n ");
                 printf("10.Вычисление натурального логарифма.\n ");break;
                 scanf("%i",&deystvie2);
                 switch(deystvie2)
                 {
                 case 1: printf("-------Сложение-------");
                         printf("Введите первое слагаемое:\n");
                         scanf("%d",&a);
                         printf("Введите второе слагаемое:\n");
                         scanf("%d",&b);break;
                         default:printf("Ошибка!");  
                 }
        case 2 : printf("help.\n ");break;
        case 3 : printf("О разработчике:\n ");break;
        default: printf("Выбрано неверное действие.\n");break;
       }
    }
    getch();
    return 0;
}
Кейсы все в незаконченном варианте, если что.
0
12.05.2015, 16:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2015, 16:41
Привет! Вот еще темы с ответами:

case-switch - C++
Вот то задание что с case-switch надо сделать помогите знаю что задание дурное

switch i case - C++
v 4jom u menja o6ibka? i kak vivisti rezultat? # include &lt;iostream&gt; # include &lt;conio.h&gt; using namespace std; int main () ...

switch и case - C++
Пишет, что switch не содержит case, но судя по коду - это не так... как же заставить его видеть этот case? #include &lt;iostream&gt; ...

Switch (Case) - C++
У меня есть программа, в ней по сути 2 подпрограммы, как сделать что бы при включении программы было меню выбора какое задание выполнять ? ...


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

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

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