Помощь по программе голосования на С ++ (для начинающих)!

Я новичок в cpp, и я пытаюсь тренироваться с небольшой программой голосования.
Вы отдаете в партии, а затем голоса партии.

#include<iostream>
#include<string>

using namespace std;

int main()
{
string sInput = " ";
string sName1 = " ";
string sName2 = " ";
int iParty1 = 0;
int iParty2 = 0;

cout << "Name of the first party: ";
cin >> sName1;
cout << "Name of the second party: ";
cin >> sName2;

while (sInput != "")
{
cout << "Your vote: ";
cin >> sInput;
cout << endl;
if (sInput == sName1)
{
iParty1++;
}
else
{
if (sInput == sName2)
{
iParty2++;
}
else
{
cout << "Wrong Input" << endl;
}
}

}
cout << sName1 << ": " << iParty1 << endl;
cout << sName2 << ": " << iParty2 << endl;
getchar();
return 0;
}

Итак, вы видите цикл while. Я хочу остановить программу, если я только нажму клавишу ввода.
Но когда я это делаю, ничего не происходит. Зачем? Дайте мне подсказку!

1

Решение

Измените вашу функцию ввода так, чтобы она читала всю строку через std::cin а не токенизированная строка. Вам нужно будет рассмотреть этот метод чтения, поскольку в instream могут быть пробелы. Кроме того, ваш неправильный код ввода срабатывает, когда вы просто ставите пустую строку.

Вот исправленная версия:

#include<iostream>
#include<string>

using namespace std;

int main()
{
string sInput = " ";
string sName1 = " ";
string sName2 = " ";
int iParty1 = 0;
int iParty2 = 0;

cout << "Name of the first party: ";
cin >> sName1;
cout << "Name of the second party: ";
cin >> sName2;
cin.ignore();

while (sInput != "")
{
cout << "Your vote: ";
getline(cin, sInput);
cout << endl;
if (sInput == sName1)
{
iParty1++;
}
else
{
if (sInput == sName2)
{
iParty2++;
}
else
{
cout << "Wrong Input" << endl;
}
}

}
cout << sName1 << ": " << iParty1 << endl;
cout << sName2 << ": " << iParty2 << endl;
getchar();
return;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]