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

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

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

не выполняется switch - C++

01.12.2011, 08:14. Просмотров 1793. Ответов 37
Метки нет (Все метки)

первый вложенный цикл выполняется корректно, но второй - после выбора вылетает из программы, т.е. ввожу константу и все - блок {} не выполняется, почему?????

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
int main(int argc, char* argv[])
{
    setlocale( LC_ALL,"Russian" );
  Notebook note;
  int ch1,ch2,ch3; 
  start:   // Вывод меню 
  system("cls"); 
  cout << "\n\nВведите нужный номер пункта меню.";
  cout << "\n1. Создать запись";
  cout << "\n2. Удалить запись";
  cout << "\n3. Просмотреть все записи";
  cout << "\n4. Изменить номер телефона";
  cout << "\n5. Поиск";
  cout << "\n6. Сортировать ";
  cout << "\n7. Завершить программу";
  cout << "\n\nВведите номер: ";
  cin >> ch1;
  cout << "\n\n";
  switch(ch1)
  {
    case 1: system("cls");
      note.add();
      break;
    case 2: system("cls");
      note.deleted();
      break;
    case 3: system("cls");
      note.print();
      break;
    case 4: system("cls"); 
      note.changes_number();
      break;
    case 5: system("cls");
        cout << "\n1. по имени";
        cout << "\n2. по номеру телефона";
        cout << "\n3. по дате рождения";
        cout << "\nВведите номер пункта подменю: ";
        cin >> ch2;
        switch(ch2)
        {
          case 1: system("cls");
            note.search_by_name();
            break;
          case 2: system("cls");
            note.search_by_number();
            break;
          case 3: system("cls");
            note.search_by_date();
            break; 
        }
        cout << "\n\nХотите вернуться в меню ?(y/n)";
            if(_getch() == 'y') goto start;
    case 6: system("cls");
        cout << "\n1. по имени";
        cout << "\n2. по фамилии";
        cout << "\n3. по дате рождения";
        cout << "\nВведите номер пункта подменю: ";
        cin >> ch3;
        switch(ch3)
        {
          case 1: 
            note.sort_by_name();
            break;
          case 2: 
            note.sort_by_last_name();
            break;
          case 3: 
            note.sort_by_date();
            break; 
        }
    case 7: return 0; 
      break;
    default:
      cout << "\nТакого пункта меню нет.";  
  }
  cout << "\n\nХотите вернуться в меню ?(y/n)";
  if(_getch() == 'y') goto start;
  return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2011, 08:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос не выполняется switch (C++):

Не выполняется заданная ветвь в switch - C++
когда запускаю задачу не делает случай 2,а точнее ф-цию deshe #include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;iomanip&gt; #include...

Код не выполняется в одном месте, но выполняется в другом - C++
Вот код процедуры: LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; HDC hdc; ...

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

While{switch{switch{break;}}} break выходит из while - C++
В общем необходимо конструкцию switch запускать в цикле, в каждом case X: стоит свой break;, да бы выполнился один case, а не все. Проблема...

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

switch - C++
switch(user_selection){ case 1: mainMenu.switchMenu(user_selection); break; case 2: mainMenu.switchMenu(user_selection); break; case...

37
Aneron
158 / 157 / 12
Регистрация: 20.04.2010
Сообщений: 570
01.12.2011, 11:27 #16
Цитата Сообщение от irina3456 Посмотреть сообщение
а что тогда вместо goto???
какой нить внешний безконечный цикл.
например
C++
1
2
3
4
5
6
bool exit = 0;
while(!exit)
{
cout << "\n\nХотите вернуться в меню ?(y/n)";
if(_getch() == 'n') exit = 1;
}
0
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
01.12.2011, 12:03  [ТС] #17
при нажатии y выходит из прог...

Добавлено через 27 минут
мне просто необходимо 2ое подменю, пжлста, я не знаю что мне делать(( не работает 2ой цикл и все((
0
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
01.12.2011, 12:10 #18
попробуйте перед
C++
1
 cin >> ch3;
поставить
C++
1
cin.get();
0
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
01.12.2011, 12:12  [ТС] #19
C++
1
cin.get();
не помогает
0
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
01.12.2011, 13:03  [ТС] #20
Нажимаю 1, выводится :Хотите вернуться в меню ?

Добавлено через 48 минут
Цитата Сообщение от Aneron Посмотреть сообщение
у меня есть подозрение что у вас нет реализации методов класса, которые вы используете во втором свиче. В полне вероятно, что программа заходит в этот switсh,переходит в нужный case b сразу вылетает оттуда ибо не чего делать. Поменяйте все методы класса которые вы используете во втором свиче на функцию Sleep(1) и поставьте брик поинты около каждого слипа. И смотрите в дебаге. Просто я так проверял и у меня все зашло.
все равно во второй свич не заходит(((
0
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
01.12.2011, 13:16 #21
Цитата Сообщение от irina3456 Посмотреть сообщение
если ответ не равен 'y' , то выходим из программы
не, я про внутренний вопрос, там ошибка

Цитата Сообщение от irina3456 Посмотреть сообщение
а что тогда вместо goto?
цикл всегда вместо goto
цикл всегда имеет начало и конец, тогда как goto не имеет ни того, ни другого
в нескольких циклах легко разобраться, в нескольких goto нереально разобраться

внутренний switch выровняй
ошибки начинаются с бардака в записи
трудно найти ошибку в бардаке, поэтому они там прекрасно живут

Цитата Сообщение от irina3456 Посмотреть сообщение
в свич даже не заходит(((
откуда ты знаешь ?
0
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
01.12.2011, 13:39  [ТС] #22
???????

Добавлено через 3 минуты
не могу просмотреть сообщения на 3ей странице
0
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
01.12.2011, 13:42 #23
чего ?
нажми обновить
почисти кеш
0
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
01.12.2011, 14:11  [ТС] #24
вы хотите сказать, что все дело в goto??
0
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
01.12.2011, 14:20 #25
не, непонятно, как ты узнала, что внутренний switch не срабатывает
ведь у тебя там ничего нет, никакого вывода
0
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
01.12.2011, 14:37  [ТС] #26
sleep(1);
0
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
01.12.2011, 14:41 #27
во внутреннем switch сделай cout << "inner" << endl;
0
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
01.12.2011, 23:59  [ТС] #28
даже вставляю
C++
1
2
default:
        cout << "\nТакого пункта меню нет.";
и
C++
1
cout << "inner" << endl;
и ничего, опять : Хотите вернуться в меню ?

Добавлено через 22 минуты
сделала так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
switch(ch3)
        {
          case '1': 
            note.sort_by_name();
            break;
          case '2': 
                              note.sort_by_last_name();
                              break;
                            case '3': 
                              note.sort_by_date();
                              break; 
                           default:
                     cout << "\nТакого пункта меню нет."; 
        }
теперь в свич заходит, но на 1,2,3 - выводит Такого пункта меню нет,значит он просто не понимал те символы,кот вводятся, но почему и что слелать??

Добавлено через 3 часа 8 минут
????????

Добавлено через 1 час 7 минут
Я понятия не имею что делать, почему так происходит и как это исправить????

Добавлено через 14 минут
еще такое наблюдение
если у единицы убрать ' '
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
case 5: 
system("cls");
cout << rus(L"\n1. Сортировка по имени");
cout << rus(L"\n2. Сортировка по фамилии");
cout << rus(L"\n3. Сортировка по дате рождения");
cout << rus(L"\n\nВведите номер пункта подменю: ");
cin >> chs;
switch(chs)
{
case 1: 
note.sort_by_name();
break;
case '2': 
note.sort_by_last_name();
break;
case '3': 
note.sort_by_date();
break; 
default:
cout << rus(L"\nТакого пункта меню нет."); 
}
break;
case 6: note.changes_number();
break;
case 7: return 0; 
break;
default:
cout << rus(L"\nТакого пункта меню нет."); 
  }
  cout << rus(L"\n\nХотите вернуться в меню ?(y/n)");
  if(_getch() == 'y') goto start;
  return 0;
}
при нажатии 1 - выходит Хотите вернуться в меню ?,
при нажатии 2 или 3 - выходит Такого пункта меню нет.
Почему?????
0
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
02.12.2011, 00:02 #29
нет, вставляй в каждый case
это отладочные сообщение, которые ты уберёшь, когда отладишь программу
одинарные кавычки тебе не нужны (они нужны тогда, когда ты используешь char, а не int)

сделай везде цифры без кавычек (совет неправильный)
Цитата Сообщение от irina3456 Посмотреть сообщение
при нажатии 1 - выходит Хотите вернуться в меню ?,
при нажатии 2 или 3 - выходит Такого пункта меню нет.
это значит, что вход в switch есть
0
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
02.12.2011, 00:47  [ТС] #30
я убираю кавычки и при нажатии 1,2 либо 3 в "case 5" выводится " Хотите вернуться в меню ?", получется switch(chs) просто игнорируется

Добавлено через 2 минуты
а с кавычками заходит в тело, но пишет что Такого пункта меню нет.
два аналогичных case'а 4 и 5, а второй не работает(( почему?

Добавлено через 25 минут
что делать то??????????????
0
02.12.2011, 00:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2011, 00:47
Привет! Вот еще темы с ответами:

switch - C++
switch (k) { case 1 : printf(rus(&quot;Выход\n&quot;)); break; case 2 : printf(rus(&quot;Загрузить\n&quot;)); break; case 3 :...

if в switch - C++
Всем доброе время суток!!! Сразу прошу прощения за возможное существование похожей темы, со схожей сутью вопроса. google мне не в...

Switch - C++
Ошибка в 19 строке: n cannot appear in a constant-expression (потому что n это переменная?). #include &lt;iostream&gt; #include &lt;math.h&gt; ...

Switch - C++
Простите за глупый вопрос, но можно ли в switch работать с действительными числами и если да то как?


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

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

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