Я что то совсем туплю не могу понять почему switch в C++ работает. Может кто подскажет?
int MenuChoise, Exit;
char NewHuman, OldHuman;
bool number1, number2;
cout << "(1) Add new Human" << endl << "(2) Show Human list" << endl << "(3) Delete Human name" << endl << "(4) Edit Human name " << endl << "(5) Close programm " << endl;
cin >> MenuChoise;
cout <<" " << MenuChoise << " "<< endl;
switch (MenuChoise)
{
case '1':
cout <<" variant 1";
break;
case '2':
cout <<" variant 3";
break;
case '3':
cout <<" variant 3";
break;
case '4':
cout <<" variant 4";
break;
case '5':
cout <<" variant 1";
break;
Другие языки программирования и технологии
Как сделать выборв в C++?
в case нужно писать НЕ символы, а числы!!!!
Исправленный код без ошибки:
int MenuChoise, Exit;
char NewHuman, OldHuman;
bool number1, number2;
cout << "(1) Add new Human" << endl << "(2) Show Human list" << endl << "(3) Delete Human name" << endl << "(4) Edit Human name " << endl << "(5) Close programm " << endl;
cin >> MenuChoise;
cout <<" " << MenuChoise << " "<< endl;
switch (MenuChoise)
{
case 1:
cout <<" variant 1";
break;
case 2:
cout <<" variant 3";
break;
case 3:
cout <<" variant 3";
break;
case 4:
cout <<" variant 4";
break;
case 5:
cout <<" variant 1";
break;
Исправленный код без ошибки:
int MenuChoise, Exit;
char NewHuman, OldHuman;
bool number1, number2;
cout << "(1) Add new Human" << endl << "(2) Show Human list" << endl << "(3) Delete Human name" << endl << "(4) Edit Human name " << endl << "(5) Close programm " << endl;
cin >> MenuChoise;
cout <<" " << MenuChoise << " "<< endl;
switch (MenuChoise)
{
case 1:
cout <<" variant 1";
break;
case 2:
cout <<" variant 3";
break;
case 3:
cout <<" variant 3";
break;
case 4:
cout <<" variant 4";
break;
case 5:
cout <<" variant 1";
break;
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;
enum class Menu { Exit = 48, File, Edit, View, Project, Build, Debug };
int main() {
system("chcp 1251 > nul");
Menu point;
do {
system("cls");
cout << "\tВыход = 0\n\tФайл = 1\n\tПравка = 2\n\tВид = 3\n\tПроект = 4\n\tСборка = 5\n\tОтладка = 6\n";
string choice = "Ваш выбор: ";
point = static_cast<Menu>(_getch());
switch (point) {
case Menu::Exit: choice += "Выход"; break;
case Menu::File: choice += "Файл"; break;
case Menu::Edit: choice += "Правка"; break;
case Menu::View: choice += "Вид"; break;
case Menu::Project: choice += "Проект"; break;
case Menu::Build: choice += "Сборка"; break;
case Menu::Debug: choice += "Отладка"; break;
default: continue;
}
cout << choice << '\n';
system("pause");
} while (point != Menu::Exit);
}
#include <string>
#include <conio.h>
using namespace std;
enum class Menu { Exit = 48, File, Edit, View, Project, Build, Debug };
int main() {
system("chcp 1251 > nul");
Menu point;
do {
system("cls");
cout << "\tВыход = 0\n\tФайл = 1\n\tПравка = 2\n\tВид = 3\n\tПроект = 4\n\tСборка = 5\n\tОтладка = 6\n";
string choice = "Ваш выбор: ";
point = static_cast<Menu>(_getch());
switch (point) {
case Menu::Exit: choice += "Выход"; break;
case Menu::File: choice += "Файл"; break;
case Menu::Edit: choice += "Правка"; break;
case Menu::View: choice += "Вид"; break;
case Menu::Project: choice += "Проект"; break;
case Menu::Build: choice += "Сборка"; break;
case Menu::Debug: choice += "Отладка"; break;
default: continue;
}
cout << choice << '\n';
system("pause");
} while (point != Menu::Exit);
}
С чего он работает как задумали? Нет.
Вы просто введенное значение выводите, но ни один из case с выводом "variant 1" "variant 2" и т. д. не сработает. при вводе 1, 2 и т. д.
А вот сработает когда введете 49 ("variant 1"), 50 ("variant 2") и т. д.
(если исправите ещё case 2 : cout << "variant 2", а не с опечаткой "variant 3")
Т. к. Вы вводите как число (int) а в case указаны _символы_. 49 - код символа '1'. Вот по кодам и будет работать.
Уберите апострофы, если хотите чтобы нормально работал.
switch(MenuChoise) {
case 1 :...
case 2 :...
и тд.
}
К слову - правильно Choice а не Choise

Вы просто введенное значение выводите, но ни один из case с выводом "variant 1" "variant 2" и т. д. не сработает. при вводе 1, 2 и т. д.
А вот сработает когда введете 49 ("variant 1"), 50 ("variant 2") и т. д.
(если исправите ещё case 2 : cout << "variant 2", а не с опечаткой "variant 3")
Т. к. Вы вводите как число (int) а в case указаны _символы_. 49 - код символа '1'. Вот по кодам и будет работать.
Уберите апострофы, если хотите чтобы нормально работал.
switch(MenuChoise) {
case 1 :...
case 2 :...
и тд.
}
К слову - правильно Choice а не Choise

что должно происходить при выборе вариантов?
cin >> (int) MenuChoise; Считывает из консоли число и переводите его в тип int. Соответственно в case нужно отправлять не символы
case '1':
а числа
case 1:
Или использовать #include < conio.h > (не переносимый код! аккуратнее) и вместо
cin >> MenuChoise;
использовать
MenuChoise = getc();
case '1':
а числа
case 1:
Или использовать #include < conio.h > (не переносимый код! аккуратнее) и вместо
cin >> MenuChoise;
использовать
MenuChoise = getc();
Сергей Федькин
Да я написал и понял, спасибо. Сглупил
в case выполняются булевые значение
false = 0
true = 1
'1', '2', '3', '4', '5' символы и их переводы из ascii больше 0.
а при переводе числа в bool если число больше 0 то дает true и case-ы выполняются
false = 0
true = 1
'1', '2', '3', '4', '5' символы и их переводы из ascii больше 0.
а при переводе числа в bool если число больше 0 то дает true и case-ы выполняются
Похожие вопросы
- Как сделать Random в C#
- Как сделать условие в C++?
- помогите сделать задачку на c++ пожалуйста.
- Помогите сделать задачу на C++.
- помогите сделать в программе c++
- кто может сделать прогу в C++ которая поменяет местами в каждом столбце минимальный и максимальные элементы в матрице??
- Нужно сделать игру на C++ за деньги до 25 августа:
- C#. Как сделать, чтобы программа проверяла тип введённой переменной?
- Не могу сделать калькулятор C++
- C# Как сделать сохранение игры и запуск сохраненной игры?
Вы вводите как число (int) а в case указаны _символы_. 49 - код символа '1'.
- попробуйте ввести 49 и у вас напишет " variant 1"
Когда я написал ответ - только тогда у меня обновились ответы и я увидел, что правельный ответ написал ...