[英]Trying to add different variables with values to a small string of program C++
我在學校有一個項目,我們應該在那里創建一個短代碼,我嘗試了一些新的東西,結果是這樣的:
#include <iostream>
#include <string>
#include <cstdlib>
int main()
{
const double A =10.25, B = 15.75, C = 13.25, D = 9.75;
std::string line = "";
double sum = 0.0;
double price;
while (line != "T")
{
std::cout << "please enter item ordered [A/B/C/D] or \"T\" to calculate total: " << std::endl;
std::cout << "current sum : " << sum << std::endl;
std::cin >> line;
sum += atof(line.c_str());
}
price = sum + (sum * .06);
std::cout << "please pay this amount: $" << price << std::endl;
}
它應該問一個問題,然后取金額並添加所有訂單(a,b,c,d),然后添加 6% 的稅。 我嘗試將 then 設為 int 但這似乎沒有什么不同。
我似乎無法讓不同的變量來保存一個數字。 有什么我可以做的或者我應該嘗試一種策略嗎?
提前致謝
您的提示暗示用戶將鍵入A
、 B
等,但代碼稍后將其視為浮點值( sum += atof(line.c_str());
)。
如果您在程序中鍵入一個值,例如10.25
,並以字母T
結尾 - 它會起作用。
可能,不是你想要的。
您可以使用if-else
語句查看是否輸入了A
或B
,然后將其中一個變量的值添加到sum
。
如果您將行更改為“char”而不是“string”並使用數組,那么它將起作用。
#include <iostream>
#include <string>
#include <cstdlib>
int main()
{
const double products[4] = {10.25, 15.75, 13.25, 9.75}; //A-10.25, B-15.75, C-13.25, D-9.75
char line = '-';
double sum = 0.0;
double price;
while (line != 'T')
{
std::cout << "please enter item ordered [A/B/C/D] or \"T\" to calculate total: " << std::endl;
std::cout << "current sum : " << sum << std::endl;
std::cin >> line;
sum += products[ int(line-'A') ];
}
price = sum + (sum * .06);
std::cout << "please pay this amount: $" << price << std::endl;
}
line 是一個字符,所以std::cin >> line;
將讀取字符,然后int(character)
返回數字作為 ASCII 表(谷歌,如果你不知道那是什么),例如字符 A 有數字 65,B 有 66,C 67 等等。 int(line-'A') 為 line=A 返回 0,為 B 返回 1,為 C 返回 2 等。
在上面的代碼中,您將 A、B、C、D 字符串作為控制台輸入。
您正在嘗試將這些字符串值添加到總和中。 因為atof(line.c_str())只將字符串值轉換為雙精度值。 例如:字符串“1”轉換為雙精度 1.0
相反,您應該添加與這些字符串相對應的價格值。 例如:如果輸入值為“A”則加 10.25 如果輸入值為“B”則加 15.75
使用 switch case 檢查用戶輸入,如下所示。 進一步使用 char 而不是 string,因為 A、B、C、D 和 T 都是字符。
#include <iostream>
#include <cstdlib>
int main()
{
const double A =10.25, B = 15.75, C = 13.25, D = 9.75;
char line = ' ';
double sum = 0.0;
double price;
while (line != 'T')
{
std::cout << "please enter item ordered [A/B/C/D] or \"T\" to calculate total: " << std::endl;
std::cout << "current sum : " << sum << std::endl;
std::cin >> line;
switch(line){
case('A'):{
sum += A;
break;
}
case('B'):{
sum += B;
break;
}
case('C'):{
sum += C;
break;
}
case('D'):{
sum += D;
break;
}
case('T'):{
break;
}
default:{
break;
}
}
}
price = sum + (sum * .06);
std::cout << "please pay this amount: $" << price << std::endl;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.