Добавление не умножение

0

Я учу себя 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, как это делается на моем коде

Изображение 174551

  • 0
    cout << "this would cost you: " << total << " pounds" << '/n'; Вы знаете, что здесь total ?
  • 0
    Интересно, OP произошел из пролога?
Показать ещё 1 комментарий
Теги:

3 ответа

4
Лучший ответ

Это ничего не делает с общей ценой, так как всегда будет 0.

int total = price * quantity;

Результат умножения выполняется и "сохраняется" в этой точке и не изменяется позже, даже если price и quantity делают.

Вы должны поместить эту строку после строк, где вы действительно устанавливаете значения price и quantity.

Что касается вашего вопроса о "добавлении не умножения", с исправлением на месте, как и выше, вывод значения правильный, поэтому вы должны делать что-то неправильно, чего мы не можем видеть. Убедитесь, что вы используете этот код, а не какой-либо другой код.

Кроме того, вы последовательно записываете /n, тогда как это должно быть \n (что дополнительно предполагает, что ваш скриншот не работает с этим кодом). Фактически, перед тем, как ввести запрос на ввод, вы должны быть endl, чтобы убедиться, что приглашение сброшено на консоль.

  • 0
    '\n' должно быть endl
  • 0
    @Skizz, конечно, не все из них.
Показать ещё 5 комментариев
2

вы рассчитываете общее количество в неправильном месте. Первоначально вы вычисляете total = price * quantity, с price = 0 и quantity = 0, и это будет присваивать 0 total. Затем после ввода quantity и price вы не пересчитываете total, поэтому оно дает неверный результат.

Мое предложение состоит в том, чтобы поставить total = price * quantity; после stringstream(mystr) >> quantity;

  • 0
    переместил его вниз так, что он чуть выше cout << вы хотите это много, но они все еще добавляют?
  • 0
    @ Marriott81: невозможно. Приведите примеры!
Показать ещё 17 комментариев
1
auto total = [&]() { return price * quantity; };

и затем используйте total()

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

  • 1
    Для кого-то, кто заявил, что они изучают C ++, действительно ли подходит лямбда-ответ? Интересно, конечно.
  • 0
    @ Skizz трудно ответить наверняка ... но, может быть, я бы хотел также предложить auto вместо int ... Как вы думаете, изучение C ++ действительно подходит для тех, кто только начал изучать программирование?
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню