【发布时间】:2015-09-28 10:51:02
【问题描述】:
我正在尝试做作业,但我不知道如何从这里继续。任务要求设计一个计算器来控制预算。以下是要求:
您是否曾经在购物时现金不足,无法超过一定的美元限额?你有点需要一个计算器。如果设备实际上是购物车的一部分,并且当您将物品添加到购物车中时,它会增加您的总计数器,这将是很酷的。为了解决这个问题,我们将编写一个程序来记录我们到访商店时所花费的金额。
你的程序应该做什么:
- 允许购物者(用户)输入产品名称和成本。这应该得到回应和确认。请务必检查是否存在不良数据。
- 应允许用户继续此操作,直到他们想要结帐为止。
- 您的程序需要保持运行总计。
-
结帐时,应显示总计。
#include <iostream> #include <fstream> #include <string> #include <iomanip> using namespace std; int item_info(float, char); int main() { //Declare all varibles. char itemName[100]; float itemPrice; char option; float total; int count; count = 1; // Setting decimal point for output. cout.setf(ios::fixed, ios::floatfield); cout.setf(ios::showpoint); cout.precision(2); item_info(itemPrice, itemName[100]); total = total + itemPrice; //Ask user if they want to continued to add more items. cout << "Do you want to add more items? (Y/N)"; cin >> option; if (option == 'Y' || option == 'y') { item_info(itemPrice, itemName[100]); } else { cout << "The total price of all items: $" << total << ".\n"; } } int item_info(float itemPrice, char itemName[100]) { //Ask for input. cout << "Please enter the item name: "; cin.get(itemName, '\n'); //Ask for the price of the item. cout << "Please enter the price of the item: "; cin >> itemPrice; //Check if it's a valid data. while (!cin) { cin.clear(); cin.ignore(100, '\n'); cout << "Invalid input! Please enter the item price:"; cin >> itemPrice; } //Only take necessary data. cin.ignore(100, '\n'); //Confirm the user input. cout << "Item information:" << itemName <<": " << itemPrice <<"\n"; return itemPrice; }
谁能告诉我怎么解决?
【问题讨论】:
-
不要使用
float来表示货币价值:精度不够。一旦你使用了两个有效数字来表示便士/美分,你就只剩下大约 5 英镑/美元了。 -
使用
std::string,会解决你所有的问题 -
您通常不应该使用浮点来赚钱,因为数据类型不够精确。只需以美分计算,仅在打印值时转换为浮点数(如果需要)。
-
@SingerOfTheFall 我想看看你是如何仅使用
std::string计算总数的 -
@Simon,由于他的
char[]用法,该操作的代码甚至无法编译,而您正在谈论浮点精度......
标签: c++ function loops callback