Я учу себя 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
.
int total = price * quantity;
Результат умножения выполняется и "сохраняется" в этой точке и не изменяется позже, даже если price
и quantity
делают.
Вы должны поместить эту строку после строк, где вы действительно устанавливаете значения price
и quantity
.
Что касается вашего вопроса о "добавлении не умножения", с исправлением на месте, как и выше, вывод значения правильный, поэтому вы должны делать что-то неправильно, чего мы не можем видеть. Убедитесь, что вы используете этот код, а не какой-либо другой код.
Кроме того, вы последовательно записываете /n
, тогда как это должно быть \n
(что дополнительно предполагает, что ваш скриншот не работает с этим кодом). Фактически, перед тем, как ввести запрос на ввод, вы должны быть endl
, чтобы убедиться, что приглашение сброшено на консоль.
'\n'
должно быть endl
вы рассчитываете общее количество в неправильном месте. Первоначально вы вычисляете total = price * quantity
, с price = 0
и quantity = 0
, и это будет присваивать 0
total
. Затем после ввода quantity
и price
вы не пересчитываете total
, поэтому оно дает неверный результат.
Мое предложение состоит в том, чтобы поставить total = price * quantity;
после stringstream(mystr) >> quantity;
auto total = [&]() { return price * quantity; };
и затем используйте total()
auto
вместо int
... Как вы думаете, изучение C ++ действительно подходит для тех, кто только начал изучать программирование?
cout << "this would cost you: " << total << " pounds" << '/n';
Вы знаете, что здесьtotal
?