У меня есть функция, которая будет поддерживать запрос пользователя на ввод 3 данных, и после ввода данных система предложит пользователю, если они хотят ввести другой набор входных данных, считывая ввод от пользователя, а если это «Y», система снова предложит, если это «N», тогда функция завершится. Но у меня проблема: если пользователь вводит иначе, чем «Y» или «N», система должна распечатать сообщение об ошибке и попросить пользователя снова ввести правильный выбор.C++ Do while loop with if statement issue
Как реализовать его, поскольку я попытался ввести оператор if в цикле do while, но он работает некорректно.
void addstock()
{
char choice;
char result;
do
{
// current date/time based on current system
time_t now = time(0);
// convert now to string form
char* dt = ctime(&now);
// convert now to tm struct for UTC
tm *gmtm = gmtime(&now);
dt = asctime(gmtm);
string itemid;
string itemdesc;
int unitprice;
int balstock;
string date;
//getting input from user
cout<<"";
getline(cin, itemid);
cout<<" Stock ID :";
getline(cin, itemid);
cout<<" Description :";
getline(cin, itemdesc);
cout<<" Price :";
unitprice = get_Integer();
date = dt;
cout<<itemid<<" "<<itemdesc<<" "<<unitprice<<" "<<balstock<<endl;
cout <<"Testing time is " <<date<<endl;
//storing to array
int i = getstockpilesize();
stockpile[i].itemid = itemid;
stockpile[i].itemdesc = itemdesc;
stockpile[i].unitprice = unitprice;
stockpile[i].date = date;
writeUserDatabase(); //update stockdatabasefile
cout<<" \E[1;29mStock ID "<<itemid<<" added...\E[0m"<<endl;
cout << "Do you want to key in another item (Y/N)" << endl;
cin >> choice;
result = toupper(choice);
cout << "1: " << result <<endl;
if (result !='Y' || result !='N')
{
cout << "Invalid choice, please enter again!" << endl;
cin >> choice;
choice = topper(choice);
}
}
while(result =='Y');
}
Самая большая проблема заключается в том, что условие '(result! = 'Y' || result! = 'N')' всегда истинно. –
Я довольно новичок в программировании на С ++. я попытался ввести продолжение; когда система запросит меня, если я хочу ввести другой ввод, я вхожу в «g», он выдает мне сообщение об ошибке и запрашивает ввод, но когда он читает мой следующий ввод, который является «h», он просто выпрыгивает из вызов функции. –