添加不倍增

时间:2014-02-25 12:06:32

标签: c++

我正在自学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,就像我的代码一样

not adding

3 个答案:

答案 0 :(得分:4)

它没有使用总价格任何,因为它总是0

int total = price * quantity;

执行乘法的结果并且&#34;保存&#34;在点,即使pricequantity也不会更改。

您应该将此行放在之后的行中,以便您真正设置pricequantity的值。

至于你的问题&#34;添加不是乘法&#34;,如上面 the value output is correct 那样修复,所以你必须做错事我们可以&# 39;看。检查您是否正在运行代码,而不是其他代码。

此外,您一直写着/n,而它应该是\n(这进一步暗示您的屏幕截图不是来自运行代码)。实际上,输入提示之前的两个应该是endl,以确保将提示刷新到控制台。

答案 1 :(得分:2)

你在错误的地方计算总数。 最初,您使用total = price * quantityprice = 0计算quantity = 0,这会将0分配给total。然后在输入quantityprice后,您不会重新计算total,因此会给您错误的结果。

我的建议是放 total = price * quantity;之后stringstream(mystr) >> quantity;

答案 2 :(得分:1)

auto total = [&]() { return price * quantity; };

然后使用total()

http://coliru.stacked-crooked.com/a/27ba0fa6978ec9e1