-1
我要讀一個輸入文件calls_history.txt就是這個樣子建議使用固定我的代碼
Mo 13:30 16
Mo 8:15 35
Tu 7:50 20
We 17:45 30
Th 8:00 45
Su 23:50 30
,然後計算每個電話的費用。到目前爲止,這就是我得到的。
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <iomanip>
using namespace std;
int main()
{
ifstream inFile;
string filename, day, Mo, Tu, We, Th, Fr, Sa, Su;
int duration;
string time_start;
int hour_start, minute_start;
double TotalCost, cost_1, cost_2;
cout << "Enter filename: ";
cin >> filename;
cout << "Day" << "\tTime" << "\tDuration" << "\tCost" << endl;
cout << "----------------------------------------------" << endl;
inFile.open (filename.c_str());
string line;
if (inFile)
{
//read records from file
while (getline (inFile, line))
{
stringstream iss(line);
//split into 3 fields
while(iss)
{
iss >> day;
iss >> hour_start;
iss >> minute_start;
iss >> duration;
}
if (day == "Mo" || day == "Tu" || day == "We" || day == "Th" || day == "Fr")
{
if (hour_start >= 8 && hour_start <= 18)
{
TotalCost = duration*0.40;
}
if ((hour_start = 7, minute_start < 60) && (minute_start+duration >= 60))
{
cost_1 = (60-minute_start)*0.25;
cost_2 = ((duration-(60-minute_start))*0.40);
TotalCost = cost_1+cost_2;
}
if (hour_start < 8 && hour_start >= 18)
{
TotalCost = duration*0.25;
}
}
if (day == "Sa" || day == "Su")
{
if ((hour_start =23 && minute_start <60)&& (minute_start+duration >=60))
{
cost_1 = (60-minute_start)*0.15;
cost_2 = ((duration-(60-minute_start))*0.25);
TotalCost = cost_1+cost_2;
}
else
{
TotalCost = duration*0.15;
}
}
cout << day << "\t" << hour_start <<":" << minute_start << "\t" << duration << "\t\t$";
cout << setprecision(2) << fixed << TotalCost << endl;
inFile.close();
}
}
return 0;
}
我測試了它,只得到了這樣的結果
Enter filename: calls_history.txt
Day Time Duration Cost
----------------------------------------------
Mo 7:30 16 $6.40
Process returned 0 (0x0) execution time : 3.622 s
Press any key to continue.
任何建議,這樣我可以顯示所有其他行和DATAS? 我要使它看起來像這樣
Day \t Time \t Duration \t Cost
Mo \t 13:30 \t 16 \t $6.40
Mo \t 8:15 \t 35 \t $14.00
Tu \t 7:50 \t 20 \t $6.50
We \t 17:45 \t 30 \t $9.75
Th \t 8:00 \t 45 \t $18.00
Su \t 23:50 \t 30 \t $6.50
Total \t $61.15
你單步調試代碼,行由行,在調試器? – OldProgrammer
'if(day ==「Mo」,「Tu」,「We」,「Th」,「Fr」)'really? – Galik
是的,很明顯我是一個noob – Aki12