Оператор переключения cpp не выводит установленные условия

У меня возникла небольшая проблема с учебной программой на сайте cpp. Подсказка:

Write a program that presents the user w/ a choice of your 5 favorite beverages (Coke, Water, Sprite, ... , Whatever). Then allow the user to choose a beverage by entering a number 1-5. Output which beverage they chose.

★ If you program uses if statements instead of a switch statement, modify it to use a switch statement. If instead your program uses a switch statement, modify it to use if/else-if statements.

Когда я компилирую и запускаю, после ввода пользователя нет вывода.

 #include <iostream>

//cola machine

main ()
{
    //intro and options
    std::cout << "Welcome. What will you have?";
    std::cout << std::endl;
    std::cout << "1 - Coke";
    std::cout << std::endl;
    std::cout << "2 - Pepsi";
    std::cout << std::endl;
    std::cout << "3 - Mtn. Dew";
    std::cout << std::endl;
    std::cout << "4 - Water";
    std::cout << std::endl;
    std::cout << "5 - Cancel";
    std::cout << std::endl;
    //choice
    int choice;

        std::cin >> choice;

    switch (choice)
        {
            case '1':
                std::cout << "Coke";
                break;
            case '2':
                std::cout << "Pepsi";
                break;
            case '3':
                std::cout << "Mt. Dew";
                break;
            case '4':
                std::cout << "Water";
                break;
            case '5':
                std::cout << "void";
                break;

            default:
    std::cout << "enjoy your ";
    std::cout << choice;
    std::cout << "!";
        }

Любое руководство было бы замечательным, и спасибо за ваше время.

Ваш choice - это int, и вы сравниваете его с символьными литералами, значение которых не совпадает с цифрой, которую они представляют. case '1': - это case 49: с кодировкой ascii.

François Andrieux 09.01.2019 22:49
case '1' должен быть просто case 1: и то же самое в остальном, '1' - это тип char, 1 - это int. Он компилируется, потому что «1» имеет целочисленное значение, но не 1.
Tony J 09.01.2019 22:51

Вы можете исключить оператор switch и использовать массив std::string: const std::string choices[] = {"Unknown", "Coke", "Pepsi", "Mtn. Dew", "Water", "Cancel"}; Затем вы можете сказать: std::cout << choices[choice] << "\n";.

Thomas Matthews 09.01.2019 23:09

@ThomasMatthews Я думал о том, чтобы сделать это tbh, но я практикую струнные, и я просто проверил подсказку, когда писал это, она говорит: «Напишите программу, которая представляет пользователю выбор из 5 ваших любимых напитков (Coke, Water, Sprite , ..., что угодно). Затем позвольте пользователю выбрать напиток, введя число от 1 до 5. Выведите, какой напиток он выбрал. ★ Если вы программируете, используя операторы if вместо оператора switch, измените его, чтобы использовать оператор switch . Если вместо этого ваша программа использует оператор switch, измените его, чтобы использовать операторы if / else-if. "

RoscoeSteele 09.01.2019 23:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
4
117
1

Ответы 1

Это то, что вы ищете.

#include <iostream>

//cola machine

int main()
{
    //intro and options
    std::cout << "Welcome. What will you have?";
    std::cout << std::endl;
    std::cout << "1 - Coke";
    std::cout << std::endl;
    std::cout << "2 - Pepsi";
    std::cout << std::endl;
    std::cout << "3 - Mtn. Dew";
    std::cout << std::endl;
    std::cout << "4 - Water";
    std::cout << std::endl;
    std::cout << "5 - Cancel";
    std::cout << std::endl;
    //choice
    int choice;

    std::cin >> choice;

    std::cout << "Enjoy your ";

    switch (choice)
    {
    case 1:
        std::cout << "Coke";
        break;
    case 2:
        std::cout << "Pepsi";
        break;
    case 3:
        std::cout << "Mt. Dew";
        break;
    case 4:
        std::cout << "Water";
        break;
    case 5:
        std::cout << "void";
        break;

    default:
        std::cout << "NONE SELECTED";
    }

    std::cout << "!\n";

    system("PAUSE");
}

Другие вопросы по теме