0 / 0 / 0
Регистрация: 08.02.2014
Сообщений: 25
1

Switch - case

25.03.2014, 13:41. Показов 1265. Ответов 15
Метки нет (Все метки)

Доброго времени суток. Сделал меню по такой схеме:
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
switch(a)
{
    case 1:
    {
       case 1:
       case 2:
       switch(aa)
       {
             case 1:
         case 2:
         case 3:
         case 4:
       }
       case 3:
       case 4:
    }
    case 2:
    {
       switch(ab)
       {
       case 1:
       case 2:
       case 3:
       case 4:
        }
    }
}
Как мне сделать так, чтоб я мог возвращаться с высших уровней switch-case'a ни низшие.
Например, я выбрал "a", потом выбрал "aa", и мог возвратиться к выбору "a"?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2014, 13:41
Ответы с готовыми решениями:

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

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

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

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

15
4201 / 1793 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
25.03.2014, 13:51 2
По дефолту ты туда и вернёшься, так что вопрос стоит: как не вернуться из вложенного switch в case внешнего. И здесь ответ один: используй return во вложенном.
0
Модератор
Эксперт по электронике
8729 / 6522 / 884
Регистрация: 14.02.2011
Сообщений: 22,833
25.03.2014, 13:59 3
Цитата Сообщение от sandrwe Посмотреть сообщение
C++
1
2
3
4
case 1:
   {
      case 1:
      case 2:
что ты этим хотел сказать?
0
0 / 0 / 0
Регистрация: 08.02.2014
Сообщений: 25
25.03.2014, 14:01  [ТС] 4
Как это должно выглядеть? "return a" что-ли?

Добавлено через 46 секунд
Забыл switch дописать
0
4201 / 1793 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
25.03.2014, 14:07 5
Цитата Сообщение от sandrwe Посмотреть сообщение
Как это должно выглядеть? "return a" что-ли?
А что должна вернуть функция? Вот её значение и возвращай, иначе вывалишься из switch во внешний case. А если тебе именно этого и надо, то хоть break юзай, хоть вообще ничего не делай.
0
0 / 0 / 0
Регистрация: 08.02.2014
Сообщений: 25
25.03.2014, 14:10  [ТС] 6
Функция ничего не возвращает. Просто выводит на экран информацию о обьекте.
0
4201 / 1793 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
25.03.2014, 14:17 7
Тогда просто
C++
1
return;
. Чтоб не вываливаться во внешний case.
0
0 / 0 / 0
Регистрация: 08.02.2014
Сообщений: 25
25.03.2014, 14:23  [ТС] 8
ошибка
C++
1
error: return statement with no value, in function returning 'int'
0
Модератор
Эксперт С++
12437 / 10003 / 6022
Регистрация: 18.12.2011
Сообщений: 26,771
25.03.2014, 14:25 9
Цитата Сообщение от sandrwe Посмотреть сообщение
Функция ничего не возвращает
Цитата Сообщение от sandrwe Посмотреть сообщение
in function returning 'int'
Все-таки возвращает int....
так напишите return 0;
0
4201 / 1793 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
25.03.2014, 14:26 10
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
switch(a)
{
 case 1: std::cout<<"1"<<std::endl;
 switch(b)
 {
  case 1: std::cout<<"2"<<std::endl;
  case 2: std::cout<<"3"<<std::endl;
  switch(с)
  {
    case 1: std::cout<<"4"<<std::endl;
    case 2: std::cout<<"5"<<std::endl;
    case 3: std::cout<<"6"<<std::endl;
    case 4: std::cout<<"7"<<std::endl;
  }
  std::cout<<"8"<<std::endl;
  case 3: std::cout<<"9"<<std::endl;
  case 4: std::cout<<"10"<<std::endl;
 }
 std::cout<<"11"<<std::endl;
 case 2:std::cout<<"12"<<std::endl;
 switch(d)
 {
   case 1: std::cout<<"13"<<std::endl;
   case 2: std::cout<<"14"<<std::endl;
   case 3: std::cout<<"15"<<std::endl;
   case 4: std::cout<<"16"<<std::endl;
  }
  std::cout<<"17"<<std::endl;
}
std::cout<<"18"<<std::endl;
при a=1, b=2, c=3 выведет:
1
3
6
7
8
9
10
11
12
13
14
15
16
17
18, а
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
switch(a)
{
 case 1: std::cout<<"1"<<std::endl;
 switch(b)
 {
  case 1: std::cout<<"2"<<std::endl;
  break;
  case 2: std::cout<<"3"<<std::endl;
  switch(с)
  {
    case 1: std::cout<<"4"<<std::endl;
    break;
    case 2: std::cout<<"5"<<std::endl;
    break;
    case 3: std::cout<<"6"<<std::endl;
    break;
    case 4: std::cout<<"7"<<std::endl;
    break;
  }
  std::cout<<"8"<<std::endl;
  break;
  case 3: std::cout<<"9"<<std::endl;
  break;
  case 4: std::cout<<"10"<<std::endl;
  break;
 }
 std::cout<<"11"<<std::endl;
 break;
 case 2:std::cout<<"12"<<std::endl;
 break;
 switch(d)
 {
   case 1: std::cout<<"13"<<std::endl;
   break;
   case 2: std::cout<<"14"<<std::endl;
   break;
   case 3: std::cout<<"15"<<std::endl;
   break;
   case 4: std::cout<<"16"<<std::endl;
   break;
  }
  std::cout<<"17"<<std::endl;
  break;
}
std::cout<<"18"<<std::endl;
при тех же условиях выведет:
1
3
6
8
11
17
18.

Добавлено через 45 секунд
Цитата Сообщение от sandrwe Посмотреть сообщение
ошибка
Код C++
1
error: return statement with no value, in function returning 'int'
А кто то только что утверждал, что функция ничего не возвращает, а только выводи инфу от объекте.
0
0 / 0 / 0
Регистрация: 08.02.2014
Сообщений: 25
25.03.2014, 14:43  [ТС] 11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int aa;
                cin>>aa;
                switch(aa)
                {
                    case 1: {cout<<"Wpisz ID studenta--> ";        //IFORMACJA O STUDENTACH
                    string aaa;
                    cin>>aaa;
                    for(int i=0; i<36; i++)
                    {
                        if(aaa==ocn[i]->s_get_id())
                        {
                            ocn[i]->o_wypisz_2();
                            ocn[i]->s_get_kierunek();
                        }
                    }
                    //break;
                    return 0;}
Просветите неопытного кто тут что возвращает)
П.С при return 0, программа вырубается
0
4201 / 1793 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
25.03.2014, 14:48 12
Это ты должен знать, что хочешь вернуть. Но если бы функция ничего не возвращала, то была бы void, а тогда не было бы процитировной тобой гогомессаги, в которой как раз и говорится, что функция обязана вернуть значение, так как её тип int. И вся прога не может вырубаться по
C++
1
return 0;
из функции.
0
0 / 0 / 0
Регистрация: 08.02.2014
Сообщений: 25
25.03.2014, 14:53  [ТС] 13
Страшно извиняюсь, это меню у меня в main-файле. Тупанул.
0
4201 / 1793 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
25.03.2014, 14:54 14
Так ты даже декомпозицию не сделал?
0
0 / 0 / 0
Регистрация: 08.02.2014
Сообщений: 25
25.03.2014, 14:57  [ТС] 15
В смысле просто разделить все это на методы?
0
4201 / 1793 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
25.03.2014, 15:16 16
Нет. Методы - это функции-члены класса, например, o_wypisz_2() - это, судя по синтаксису вызова, метод. Их назначение - выполнение отдельных не элементарных операций с объектами. А декомпозиция - это разделение задачи на подзадачи, при программировании выливающееся в разделение программы на подпрограммы, каждая из которых решает свою подзадачу. Не одну операцию, а целую задачу, но являющуюся частью другой задачи. Это в том числе, выделение некоторых последовательностей операций в неэлементарные операции, но выделение методов - только часть декомпозиции и если в итоге прямо в функции main оказывается сложный вывод подробной инффы об объекте вместо вызова соответствующей функции, то декомпозиция всё ещё не сделана. Возможно, она начата, возможно выполнена часть декомпозиции, но не более того. Задача целиком и так бывает слишком сложна, чтоб нагружать main ещё и этим. Вывод одного значения поля объекта может быть и в main. Но не три уровня свичей в рамках подзадачи описания состояния объекта.

Добавлено через 7 минут
Я правильно понимаю, что ты делаешь объектную базу данных о студентах? Тогда ещё должны быть подзадачи ввода информации о студенте с клавиатуры, сохранения базы на диск, чтения базы, или её части с диска, выборки объектов по некоторому признаку... Всё это сваливать в main? Пожалей тех, кто будет читать прогу целиком, искать в ней ошибки, или вносить изменения, не будучи её автором, либо основательно забыв замесел.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2014, 15:16
Помогаю со студенческими работами здесь

Switch case
Как с помощью switch case сделать так чтобы программа выдавала YES при значении 0-2018? &gt;&lt; и &amp;&amp;...

Switch-case
Можно ли так писать? switch (simvol) { case (('(') or ('1') or ('2') or ('3') or ('4')...

Switch, case
Здравствуйте, подскажите пожалуйста, что здесь может быть не так, у меня большинство у одинаковые...

Switch - case
Обязательно с использованием классов Есть задача. Дан массив вещественных чисел. а) Ко всем...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru