我正在自学C ++,从基础开始写这个:
// stringstreams
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
string mystr;
int price = 0;
int quantity = 0;
int total = price * quantity;
cout << "------------------------------------------------------" << '/n';
cout << "-----------------Welcome to the shop!-----------------" << '/n';
cout << "------------------------------------------------------" << '/n';
cout << "Enter price of item" << '/n';
getline(cin, mystr);
stringstream(mystr) >> price;
cout << "How Many do you want?" << '/n';
getline(cin, mystr);
stringstream(mystr) >> quantity;
cout << "you want this many: " << quantity << '/n';
cout << "at this price: " << price << '/n';
cout << "this would cost you: " << total << " pounds" << '/n';
if (total >= 20)
{
cout << "here is a discount of " << total / 20 << '/n';
}
else if (total >= 10)
{
cout << "here is a discount of " << total / 10 << '/n';
}
else
{
cout << "sorry no discount" << '/n';
};
}
我唯一的问题是 - 它增加总价而不是乘以。我觉得我错过了一些非常明显的东西,但过了一个小时后我似乎无法找出它是什么,我已经尝试进一步声明代码没有起作用,我还尝试将总数放在括号中。
我错过了什么?
- 作为一个例子 - 10个单位,每个10个,应该是100,而不是20,就像我的代码一样
答案 0 :(得分:4)
它没有使用总价格任何,因为它总是0
。
int total = price * quantity;
执行乘法的结果并且&#34;保存&#34;在此点,即使price
和quantity
也不会更改。
您应该将此行放在之后的行中,以便您真正设置price
和quantity
的值。
至于你的问题&#34;添加不是乘法&#34;,如上面 the value output is correct 那样修复,所以你必须做错事我们可以&# 39;看。检查您是否正在运行此代码,而不是其他代码。
此外,您一直写着/n
,而它应该是\n
(这进一步暗示您的屏幕截图不是来自运行此代码)。实际上,输入提示之前的两个应该是endl
,以确保将提示刷新到控制台。
答案 1 :(得分:2)
total = price * quantity
和price = 0
计算quantity = 0
,这会将0
分配给total
。然后在输入quantity
和price
后,您不会重新计算total
,因此会给您错误的结果。
我的建议是放
total = price * quantity;
之后stringstream(mystr) >> quantity;
答案 2 :(得分:1)
auto total = [&]() { return price * quantity; };
然后使用total()