Написал программу, которая при вводе цифры в виде названия выдаст саму цифру, и наоборот. К примеру, при вводе "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? Подумайте над этим...
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
После каждой строкий вставленой из файла в массив появляется лишняя строка состоящая из буквы М
Как узнать, существует тот или другой том? Например, мне нужно сделать так:
Начал изучать cocos2d-x,но столкнулся с тем, что у меня не работают функции applyForce(), apllyImpulse(), applyTorque()Пытался гуглить, но подобной проблему...