Я работаю над проектом, который должен повторить аукцион.Я предполагаю запросить имя первого участника, и если имя участника оставлено черным, выдается сообщение об ошибке, в котором BidderID оставлено пустым.
Проблема
Код продолжает автоматически пропускать Cin после запросадля "Идентификатор Bidder1" и перейти прямо к сообщению об ошибке ошибки: Идентификатор участника не заполнен.Я использую созданную мной функцию с именем getName, которая, как я понял, является проблемой, но другие места, используемые в коде, работают правильно.
int main()
{
double bid1, bid2;//declare bid1, bid2
printHeader();
string lotName= getName("Enter lot name: "); //lot name
double reservePrice= getPrice("Reserve price: $");
if (reservePrice<=0) {
printErrorMessage(5);
return 0;
}
cout<<"\n";
string bidder1= getName("Bidder 1 ID: "); //bidder1 name
if (bidder1== "") {
printErrorMessage(3);
bid1=0;
}
else {
bid1= getPrice("Bidder1 price: $"); //bidder 1 price
bool lead= isBidPriceGood (bid1, reservePrice); //true if bid1>reservePrice
if (lead==true)
cout<<"\n"<<bidder1<<" is high bidder, current price = $"<<bid1<<endl<<endl;
}
string bidder2= getName("Bidder 2 ID: "); //bidder2 name
getline(cin,bidder2);
if (bidder2== "") {
printErrorMessage(3);
bid2=0;
}
else {
bid2= getPrice("Bidder1 price: $"); //bidder 2 price
isBidPriceGood (bid2, reservePrice); //true if bid2>reservePrice
}
//function
string getName(string prompt)
{
string name;
cout<<prompt;
getline(cin,name);
return name;
}
double getPrice(string prompt)
{
string x;
double price;
cout<< prompt;
cin>>price;
getline(cin,x);
return price;
}
void printErrorMessage(int num)
{
if (num == 1) {
cout << endl
<< " ERROR: Reserve not met, bid rejected" << endl << endl;
} else if (num == 2) {
cout << endl
<< " ERROR: Negative price, bid rejected" << endl << endl;
} else if (num == 3) {
cout << endl
<< " ERROR: Blank bidder ID, no bid allowed" << endl << endl;
} else if (num == 4) {
cout << endl
<< "ERROR: Neither bidder met Reserve, auction canceled" << endl << endl;
} else if (num == 5) {
cout << endl
<< "ERROR: Reserve is not positive, auction canceled" << endl << endl;
} else {
cout << " This should never print" << endl << endl;
}
}