Сравнение ввода пользователя со значением в массиве struct - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть проект, над которым я работаю, для класса, в котором мне нужно создать систему торговых точек. Я пытаюсь пробежать диапазон, пока пользователь не введет опцию, скажем, «B», например, не соответствует menuOption. Я пробовал 'strcmp' безрезультатно, и я довольно плохо знаком с C ++, поэтому мои знания все еще довольно слабы. Мое детективное мастерство также не дало никаких решений, поэтому любая помощь будет оценена.

Я знаю, что приведенный ниже код неверен, так как он пытается сравнить 'char' и 'char *', но это идея того, чего я хотел бы достичь sh.

for (int i = 0; i < MAX; i++) {
    if ( choice[0] == options[i].menuOption){ 
        subTotal += options[i].price
        itemsOrdered.push_back(options[i].optionName)
    }
}

Может быть, я ошибаюсь.

struct Menu {
    char menuOption[1];
    string optionName;
    float price;
};

также выбор:

char choice[1]

1 Ответ

0 голосов
/ 14 апреля 2020

Поскольку вы решаете, что выбор и пункт меню - это один символ, используйте только символ, подобный этому:

struct Menu {
    char menuOption;
    string optionName;
    float price;
};

char choice;

Тогда вы сравниваете следующим образом:

if ( choice == options[i].menuOption)

Если вы хотите, чтобы ваш код, чтобы работать как есть, просто измените эту строку:

if ( choice[0] == options[i].menuOption)

Кому:

if ( choice[0] == options[i].menuOption[0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...