Написал программу, которая при вводе цифры в виде названия выдаст саму цифру, и наоборот. К примеру, при вводе "one" программа выводит "1", при вводе "1" она выдает "one", и т.д. до девяти.
int main()
{
vector<string> numb = {"zero", "one", "two",
"three", "four", "five", "six", "seven", "eight", "nine"};
vector<int> val = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
for (string num; cin >> num;)
{
bool found = false;
int b = 0;
for (int i = 0; i < numb.size(); ++i)
{
if (num == numb[i])
{
found = true;
b = i;
break;
}
}
if (found)
cout << val[b] << endl;
else
for (int a = 0; cin >> a;)
{
cout << numb[a] << endl;
break;
}
}
return 0;
}
И с буквенным вводом и численным выводом все в порядке, а вот с вводом числа и выводом "букв" работает через раз. Т.е я ввожу "1" и ничего не происходит - ни ошибки, ни чего-то иного. Затем я еще раз ввожу "1", и тогда программа выдает "one". Помогите понять, что не так, пожалуйста.
Вы уже прочли число, оно не совпало со строками. И вы опять пытаетесь его читать...
Замените блок else на приведенный:
else
{
int a = stoi(num);
cout << numb[a] << endl;
}
И учтите, что у вас совершенно не обрабатываются ошибки! Что, если я введу "один" или 845? Подумайте над этим...
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости