我不能为我的生活弄清楚如何计算我的程序的某个部分。我只是需要一些帮助来了解如何获得正确的总数。
在档案
111111 M 303-333-3333 333 550 0.9 720-777-7777 501 444 0.4
222222 U 303-444-5555 555 55 3.3
333333 H 720-888-9999 1888 888 3.3 720-999-1111 999 1050 1.8 720-222-2222 800 800 2.1
444444 L 720-123-4567 88 10 0
使用文本文件中的那个并知道这一点..
每部手机的电话费(定义如下)
州和地方税收8.1%的手机费税 注意:8.1%将存储为0.081
每部手机1.44美元的通用服务费
L = Low usage plan (no minutes included)
M = Mid usage plan (500 talk minutes and 500 texts included)
H = High usage plan (1000 talk minutes and 1000 texts and 2 GB data included)
U = Unlimited plan
Phone charges are as follows for each plan:
Plan Base Fee Charge for minutes Charge for texts Charge for data
L* 4.99 0.10 per minute 0.10 per text Data not available
M 49.99 0.08 per minute over 500 0.08 per text over 500 $2.88 per 500 MB over 500 MB
H 74.99 0.07 per minute over 1000 0.07 per text over 1000 $1.78 per 500 MB over 2 GB
U 99.99 No charge No charge No charge
我需要通过计算以某种方式获得这些结果
111111 Mid usage 2 $ 118.48
222222 Unlimited 1 $ 109.53
333333 High usage 3 $ 326.19
444444 Low usage 1 $ 17.43
月份总计$ 571.63
我只需要提供帮助,主要是第1和第3个帐户存档。 到目前为止,我所拥有的只是(中期和高级计划费用)..
float midPlanCharge (int& min, int& texts, float& data)
{
float total;
// double check!!!!!!!!!!!!!!!!!!!
if ( min <= BASE_MID_MIN && texts <= BASE_MID_TEXT && data <= BASE_MID_DATA )
{
total = MID_FEE;
}
else if ( min > BASE_MID_MIN && texts <= BASE_MID_TEXT && data <= BASE_MID_DATA )
{
total = MID_FEE + ( (min - BASE_MID_MIN) * MID_MIN );
}
else if ( min <= BASE_MID_MIN && texts > BASE_MID_TEXT && data <= BASE_MID_DATA )
{
total = MID_FEE + ( ( texts - BASE_MID_TEXT) * MID_TEXT);
}
else if ( min <= BASE_MID_MIN && texts <= BASE_MID_TEXT && data > BASE_MID_DATA )
{
total = MID_FEE + ( (( data - BASE_MID_DATA) * 1000 ) * MID_DATA);
}
else if ( min > BASE_MID_MIN && texts <= BASE_MID_TEXT && data > BASE_MID_DATA )
{
total = MID_FEE + (( min - BASE_MID_MIN) * MID_MIN) + ( (( data - BASE_MID_DATA)*1000) * MID_DATA);
}
else if ( min > BASE_MID_MIN && texts > BASE_MID_TEXT && data <= BASE_MID_DATA )
{
total = MID_FEE + ((min - BASE_MID_MIN) * MID_MIN) + (( texts - BASE_MID_TEXT) * MID_TEXT);
}
else if ( min <= BASE_MID_MIN && texts > BASE_MID_TEXT && data > BASE_MID_DATA )
{
total = MID_FEE + ((texts - BASE_MID_TEXT) * MID_TEXT) + (((data - BASE_MID_DATA)*1000) * MID_DATA);
}
else {
total = MID_FEE + ((min - BASE_MID_MIN) * MID_MIN) + ((texts - BASE_MID_TEXT) * MID_TEXT) + (((data - BASE_MID_DATA)*1000) * MID_DATA);
}
return total;
}
float highPlanCharge (int& min, int& texts, float& data)
{
float total;
if ( min <= BASE_HIGH_MIN && texts <= BASE_HIGH_TEXT && data <= BASE_HIGH_DATA )
{
total = HIGH_FEE;
}
else if ( min > BASE_HIGH_MIN && texts <= BASE_HIGH_TEXT && data <= BASE_HIGH_DATA )
{
total = HIGH_FEE + ( (min - BASE_HIGH_MIN) * HIGH_MIN );
}
else if ( min <= BASE_HIGH_MIN && texts > BASE_HIGH_TEXT && data <= BASE_HIGH_DATA )
{
total = HIGH_FEE + ( ( texts - BASE_HIGH_TEXT) * HIGH_TEXT);
}
else if ( min <= BASE_HIGH_MIN && texts <= BASE_HIGH_TEXT && data > BASE_HIGH_DATA )
{
total = HIGH_FEE + ((( data - BASE_HIGH_DATA) * 1000) * HIGH_DATA);
}
else if ( min > BASE_HIGH_MIN && texts <= BASE_HIGH_TEXT && data > BASE_HIGH_DATA )
{
total = HIGH_FEE + (( min - BASE_HIGH_MIN) * HIGH_MIN) + ((( data - BASE_HIGH_DATA)*1000) * HIGH_DATA);
}
else if ( min > BASE_HIGH_MIN && texts > BASE_HIGH_TEXT && data <= BASE_HIGH_DATA )
{
total = HIGH_FEE + ((min - BASE_HIGH_MIN) * HIGH_MIN) + (( texts - BASE_HIGH_TEXT) * HIGH_TEXT);
}
else if ( min <= BASE_HIGH_MIN && texts > BASE_HIGH_TEXT && data > BASE_HIGH_DATA )
{
total = HIGH_FEE + ((texts - BASE_HIGH_TEXT) * HIGH_TEXT) + (((data - BASE_HIGH_DATA)*1000) * HIGH_DATA);
}
else {
total = HIGH_FEE + ((min - BASE_HIGH_MIN) * HIGH_MIN) + ((texts - BASE_HIGH_TEXT) * HIGH_TEXT) + (((data - BASE_HIGH_DATA)*1000) * HIGH_DATA);
}
return total;
}
答案 0 :(得分:1)
(1)不确定你是否被告知要使用花车,但由于内部四舍五入,他们很难用钱。你最好使用一个整数并以便士工作,然后在必要时除以并乘以100 - 通常当你需要打印数值时。
(2)我只是把你的中档作为一个例子,它似乎有用,如果没有,它应该足够接近让你纠正。
(3)你坚持使用的两个(1&amp; 3)有多部手机,所以大概是你在开始时解析它。我只是在这里模拟它。这不会让你自由回家,但希望减少混乱 - 其中一些似乎是你自己造成的。
#include <iostream>
#include <cmath>
using namespace std;
const float SERVICE_FEE = 1.44;
const float MID_FEE = 49.99;
const int BASE_MID_MIN = 500;
const float MID_MIN = 0.08;
const int BASE_MID_TEXT = 500;
const float MID_TEXT = 0.08;
const int BASE_MID_DATA = 500;
const float MID_DATA = 2.88;
float midPlanCharge (int min, int texts, float data)
{
float total = MID_FEE;
data *= 1000;
if (min > BASE_MID_MIN)
total += (min - BASE_MID_MIN) * MID_MIN;
if (texts > BASE_MID_TEXT)
total += (texts - BASE_MID_TEXT) * MID_TEXT;
if (data > BASE_MID_DATA)
total += roundf((data - BASE_MID_DATA) / BASE_MID_DATA) * MID_DATA;
return total;
}
int main(int argc, char *argv[])
{
float accTotal = 0.0;
accTotal += midPlanCharge(333, 550, 0.9);
accTotal += midPlanCharge(501, 444, 0.4);
accTotal += (accTotal * 0.081); //tax
accTotal += SERVICE_FEE * 2; //service fee on 2 phones
cout << "Total = " << accTotal << endl;
return(0);
}
输出:总计= 118.482