大家好我只是在学习我的第一个编程语言,并且刚刚在我的代码中纠正了一个错误,只留下了另一个错误。值得庆幸的是,这是我需要解决的最后一个问题,但我自己也有点麻烦。
该程序将读入与每个客户编号相关的客户编号和费用。然后它将添加财务费用,输出所有费用,总计所有内容,并以相反的顺序将每个客户的新余额与其ID号一起保存到文件中。
beginningbalance.dat看起来像
111
200.00
300.00
50.00
222
300.00
200.00
100.00
和newbalances.dat应该看起来像
222
402.00
111
251.00
除了取决于文件写入循环中“count--”的放置位置,我最终得到了
222
402.00
111
251.00
-858993460
-92559631349317830000000000000000000000000000000000000000000000.00
我无法弄清楚我应该做些什么来摆脱这些额外的价值观。有什么建议吗?
这是我的代码
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
int main()
{
int count = 0;
const int size = 100;
double customer_beg_balance, customer_purchases, customer_payments, finance_charge_cost, finance_charge = .01;
int customer_number[size];
double new_balance[size];
double total_beg_balances=0,total_finance_charges=0,total_purchases=0,total_payments=0,total_end_balances=0;
ifstream beginning_balance;
beginning_balance.open("beginningbalance.dat");
while(beginning_balance>>customer_number[count])
{
beginning_balance >> customer_beg_balance;
beginning_balance >> customer_purchases;
beginning_balance >> customer_payments;
finance_charge_cost = customer_beg_balance * finance_charge;
new_balance[count] = customer_beg_balance + finance_charge_cost + customer_purchases - customer_payments;
total_beg_balances+=customer_beg_balance;
total_finance_charges+=finance_charge_cost;
total_purchases+=customer_purchases;
total_payments+=customer_payments;
total_end_balances+=new_balance[count];
cout<<fixed<<setprecision(2)<<setw(8)<<"Cust No "<<"Beg. Bal. "<<"Finance Charge "<<"Purchases "<<"Payments "<<"Ending Bal.\n"
<<customer_number[count]<<" "<<customer_beg_balance<<" "<<finance_charge_cost<<" "<<customer_purchases<<" "<<customer_payments<<" "<<new_balance[count]<<endl;
count++;
}
cout<<"\nTotals "<<total_beg_balances<<" "<<total_finance_charges<<" "<<total_purchases<<" "<<total_payments<<" "<<total_end_balances<<endl;
ofstream new_balance_file;
new_balance_file.open("NewBalance.dat");
while(count >= 0)
{
count--;
new_balance_file <<customer_number[count]<<endl;
new_balance_file<< fixed<<setprecision(2)<<new_balance[count]<<endl;
}
new_balance_file.close();
system("pause");
return 0;
}
答案 0 :(得分:3)
你的病情错了
while(count >= 0)
{
count--;
new_balance_file <<customer_number[count]<<endl;
new_balance_file<< fixed<<setprecision(2)<<new_balance[count]<<endl;
}
应该是count > 0
而不是count >= 0
。
这种方式count将遍历值n, n-1, ... 1
并且因为你在while语句的开头递减它,你在循环中操作的值将是n-1, n-2.... 0
,正好是什么你需要。
顺便说一句,如果你的课程已经涵盖了for
循环并且你被允许使用它,那么它更合适,就像这样
for(int i = count - 1; i >= 0; --i)
{
use i instead of count here.
}
希望这对你的学习有所帮助并祝你好运!