尝试将带有值的不同变量添加到一小串程序C++中
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%的税。 我尝试将 INT 制作为 int,但这似乎没有区别。
我似乎无法让不同的变量来保存一个数字。 我能做些什么还是应该尝试一个策略?
感谢在爱德瓦斯
你的提示意味着用户会键入A
、B
等,但代码后来将其视为浮点值(sum += atof(line.c_str());
(。
如果您键入一个值,例如10.25
程序,并以字母T
结尾 - 它将起作用。
可能,不是你想要的。
您可以使用if-else
语句查看是否输入了A
或B
,然后将其中一个变量的值添加到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 等。
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 如何在C++中从两个单独的for循环中添加两个数组
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 如何仅为一个函数添加延迟
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 如何将更多文件夹添加到c++include路径
- 如何将元素添加到数组的线程安全函数?
- QT通过C++添加映射QML项目
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 只能向C++添加一定数量的字符
- Qt和C++:将QLineEdit添加到QTabWidget中
- 将QIcon添加到QTableView单元格
- 为什么我必须在C++中添加一个赋值符号来声明一个数组
- 为什么除非添加括号,否则构造函数上的模板替换会失败?
- 将图像添加到资源文件夹UWP C++
- 当我尝试添加 2 个大字符串时,我无法弄清楚出了什么问题