最近、ショッピング カートの割り当てに取り組んでいましたが、以下のコードが機能しない理由がわかりませんでした。
配列を使用せずに、3 つのアイテムの名前、コスト、数量を出力するコードを作成する必要があります。
最大 3 つのアイテムの最後に、アイテムの合計コストを表示する必要があります。現在、2 番目の項目を追加した後、プログラムが最初の入力 (項目名) を要求しないように見えるため、行き詰まっています。コードは次のとおりです。
#include <iostream>
int main() {
int total;
std::cout << "Item name:";
std::string itemName;
std::getline(std::cin,itemName);
std::cout << "Cost(in cents):";
int cost;
std::cin >> cost;
std::cout << "Quantity:";
int quantity;
std::cin >> quantity;
std::cout << "Do you want to add more items? (Y/N)";
char option;
std::cin >> option;
if (option == 'y') {
std::cout << "Item name:";
std::string itemName2;
std::getline(std::cin,itemName2);
std::cout << "Cost(in cents):";
int cost2;
std::cin >> cost2;
std::cout << "Quantity:";
int quantity2;
std::cin >> quantity2;
std::cout << "Do you want to add more items? (Y/N)";
char option2;
std::cin >> option2;
if (option2 == 'y') {
std::cout << "Item name:";
std::string itemName3;
std::getline(std::cin,itemName3);
std::cout << "Cost(in cents):";
int cost3;
std::cin >> cost3;
std::cout << "Quantity:";
int quantity3;
std::cin >> quantity3;
total = cost*quantity + cost2*quantity2 + cost3*quantity3;
std::cout << "Total value:" << total;
}
else {
total = cost*quantity + cost2*quantity2;
std::cout << "Total value:" << total;
}
}
else {
total = cost*quantity;
std::cout << "Total value:" << total;
}
return 0;
}
すべてのアイテム入力の後に「y」を入力すると、コードは何らかの方法で itemName の入力をスキップし、同じ行に「Cost(in cents):」と「Item name:」を出力します。
getline() 関数と何か関係があると思いますが、正確にはわかりません。どんな助けでも大歓迎です。