Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
01.12.2011, 08:14     не выполняется switch #1
первый вложенный цикл выполняется корректно, но второй - после выбора вылетает из программы, т.е. ввожу константу и все - блок {} не выполняется, почему?????

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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2011, 08:14     не выполняется switch
Посмотрите здесь:

C++ switch
C++ Switch C++
Switch C++
switch C++
C++ Код не выполняется в одном месте, но выполняется в другом
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
01.12.2011, 08:21     не выполняется switch #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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;
ch3 = 3.
выполняетс note.sort_by_date();
затем по break вылетает из текущего(внутреннего) switch-a
попадаем во внешний список. break-a нет чтоб выйти из внешнего cwitch-а. и Начинает обрабатыватся case 7.

C++
1
2
        case 7: return 0; 
          break;
по ретерну программа выходит из функции и от break-a толка ни какого
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
01.12.2011, 09:22  [ТС]     не выполняется switch #3
вообще не выполняет, после нажатия 1 (либо 2,3) сразу вылетает.допустим брейк убираем после саse 7, все равно вылетает.
А если сделать так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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; 
                }
        cout << "\n\nХотите вернуться в меню ?(y/n)";
            if(_getch() == 'y') goto start;
        case 7: return 0; 
          break;
то в саse 6 в цикл даж не заходит, а спрашивает Хотите вернуться в меню ?(y/n)
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
01.12.2011, 09:43     не выполняется switch #4
сейчас попробую скомпилировать. дайте список хидеров. но то что я сказал это явный косяк.
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
01.12.2011, 09:51  [ТС]     не выполняется switch #5
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include <conio.h>
#include <fstream>
#include <vector>
#include <iomanip>
#include <cstdlib>
#include <algorithm>
#include <windows.h>
Добавлено через 4 минуты
я могу весь код выложить
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
01.12.2011, 10:05     не выполняется switch #6
Вылетает в смысле из программы? Это норм. Вылетает из внутреннего свича и начинает отрабатывать case 7. Там уже и вылетает.

Исправьте как
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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; 
                }
break;
        case 7: return 0;
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
01.12.2011, 10:10  [ТС]     не выполняется switch #7
нажимаю пункт меню 1, выводится Хотите вернуться в меню ?(y/n),т.е. в цикл
C++
1
2
3
4
5
6
7
8
9
10
11
{
                  case 1: 
                    note.sort_by_name();
                        break;
                  case 2: 
            note.sort_by_last_name();
            break;
          case 3: 
            note.sort_by_date();
            break; 
                }
даже не заходит
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
01.12.2011, 10:20     не выполняется switch #8
C++
1
2
3
4
case '1':
  // ...
case '2':
  // ...
и т.д.
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
01.12.2011, 10:24  [ТС]     не выполняется switch #9
без break??
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
01.12.2011, 10:25     не выполняется switch #10
в дебаге посмотрите заходит ли во второй switch.
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
01.12.2011, 10:44  [ТС]     не выполняется switch #11
так у меня int, зачем ' ',это же только для символов

Добавлено через 18 минут
переделала через do
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; 
  do   // Вывод меню 
  {
      ch1=0,ch2=0,ch3=0; 
  cout << "\n\nВведите нужный номер пункта меню.";
  cout << "\n1. Создать запись";
  cout << "\n2. Удалить запись";
  cout << "\n3. Просмотреть все записи";
  cout << "\n4. Изменить номер телефона";
  cout << "\n5. Поиск";
  cout << "\n6. Сортировать ";
  cout << "\n7. Завершить программу";
  cout << "\n\nВведите номер: ";
  ch1 = _getch();
  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Введите номер пункта подменю: ";
        ch2 = _getch();
        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; 
        }
    case '6': system("cls");
            cout << "\n1. по имени";
                cout << "\n2. по фамилии";
                cout << "\n3. по дате рождения";
                cout << "\nВведите номер пункта подменю: ";
                ch3 = _getch();
            switch(ch3)
                {
                  case '1': 
                    note.sort_by_name();
                        break;
                  case '2': 
            note.sort_by_last_name();
            break;
          case '3': 
            note.sort_by_date();
            break; 
                }
break;
        case '7': return 0; 
 
    default:
      cout << "\nТакого пункта меню нет.";  
  }
  }
  while(true);
  return 0;
}
в цикл
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
case '5': system("cls");
        cout << "\n1. по имени";
        cout << "\n2. по номеру телефона";
        cout << "\n3. по дате рождения";
        cout << "\nВведите номер пункта подменю: ";
        ch2 = _getch();
        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; 
        }
заходит

а в цикл
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
case '6': system("cls");
            cout << "\n1. по имени";
                cout << "\n2. по фамилии";
                cout << "\n3. по дате рождения";
                cout << "\nВведите номер пункта подменю: ";
                ch3 = _getch();
            switch(ch3)
                {
                  case '1': 
                    note.sort_by_name();
                        break;
                  case '2': 
            note.sort_by_last_name();
            break;
          case '3': 
            note.sort_by_date();
            break; 
                }
break;
после выбора выходит в главное меню, т.е не заходит в switch(ch3).

почему????????????????
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
01.12.2011, 10:51     не выполняется switch #12
у меня есть подозрение что у вас нет реализации методов класса, которые вы используете во втором свиче. В полне вероятно, что программа заходит в этот switсh,переходит в нужный case b сразу вылетает оттуда ибо не чего делать. Поменяйте все методы класса которые вы используете во втором свиче на функцию Sleep(1) и поставьте брик поинты около каждого слипа. И смотрите в дебаге. Просто я так проверял и у меня все зашло.
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
01.12.2011, 11:02  [ТС]     не выполняется switch #13
а по подробнее про слипы и брик поинты?? я не понимаю((
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
01.12.2011, 11:08     не выполняется switch #14
irina3456, выровняй по оступам
во всех case'ах должны быть break'и, даже если оно там выходит
goto не должно быть вообще
что происходит, если ответ не равен 'y' ?
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
01.12.2011, 11:22  [ТС]     не выполняется switch #15
если ответ не равен 'y' , то выходим из программы, а что тогда вместо goto???

Добавлено через 7 минут
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
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");
        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; 
        }
        break;
    case 5: 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;
        }
        break;
    case 6: note.changes_number();
      break;
    case 7: return 0;
          break;
    default:
      cout << "\nТакого пункта меню нет.";  
  }
  cout << "\n\nХотите вернуться в меню ?(y/n)";
  if(_getch() == 'y') goto start;
  return 0;
}

везде есть брейки, в case 5, после
cout << "\nВведите номер пункта подменю: ";
cin >> ch3;
в свич даже не заходит(((
а предлагает cout << "\n\nХотите вернуться в меню ?(y/n)";
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
01.12.2011, 11:27     не выполняется switch #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;
}
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
01.12.2011, 12:03  [ТС]     не выполняется switch #17
при нажатии y выходит из прог...

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

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

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

Или воспользуйтесь поиском по форуму:
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
01.12.2011, 13:03  [ТС]     не выполняется switch #20
Нажимаю 1, выводится :Хотите вернуться в меню ?

Добавлено через 48 минут
Цитата Сообщение от Aneron Посмотреть сообщение
у меня есть подозрение что у вас нет реализации методов класса, которые вы используете во втором свиче. В полне вероятно, что программа заходит в этот switсh,переходит в нужный case b сразу вылетает оттуда ибо не чего делать. Поменяйте все методы класса которые вы используете во втором свиче на функцию Sleep(1) и поставьте брик поинты около каждого слипа. И смотрите в дебаге. Просто я так проверял и у меня все зашло.
все равно во второй свич не заходит(((
Yandex
Объявления
01.12.2011, 13:03     не выполняется switch
Ответ Создать тему
Опции темы

Текущее время: 10:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru