尝试将带有值的不同变量添加到一小串程序C++中

Trying to add different variables with values to a small string of program C++

本文关键字:添加 C++ 程序 变量      更新时间:2023-10-16

我在学校有一个项目,我们应该创建一个短代码,我尝试了一些新的东西,最终得到了这个:

#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%的税。 我尝试将 INT 制作为 int,但这似乎没有区别。

我似乎无法让不同的变量来保存一个数字。 我能做些什么还是应该尝试一个策略?

感谢在爱德瓦斯

你的提示意味着用户会键入AB等,但代码后来将其视为浮点值(sum += atof(line.c_str());(。

如果您键入一个值,例如10.25程序,并以字母T结尾 - 它将起作用。

可能,不是你想要的。

您可以使用if-else语句查看是否输入了AB,然后将其中一个变量的值添加到sum中。

在上面的代码中,您可以获得 A,B,C,D 字符串作为控制台输入。

您正在尝试将这些字符串值添加到总和中。因为atof(line.c_str(((仅将字符串值转换为双精度值。 例如:字符串"1"转换为双精度1.0

相反,您应该添加对应于这些字符串的价格值。 例如:如果输入值为"A",则添加 10.25 如果输入值为"B",则添加 15.75

使用开关大小写检查用户输入,如下所示。 进一步使用 char 而不是字符串,因为 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;
}

如果您将行更改为"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;
}

行是一个字符,所以std::cin >> line;将读取字符,然后int(character)返回 ASCII 表时的数字(如果您不知道那是什么,请谷歌(,例如字符 A 有数字 65,B 有 66,C 有 67,依此类推。int(line-'A'( 返回 0 表示 line=A,1 表示 B,2 表示 C 等。