[問題] fstream eof 的問題 [已解決]
看似簡單的邏輯, 試了很多種方法還是沒有解決, 煩請前輩們指點迷津 m(_._)m
需求 : 讀入一個 .txt 檔案如下
前面是學號, 後面是成績
計算出每個學生個人成績以及各科平均
1001 3.0 2.7 2.0 2.8
1002 3.7 3.5 4.0 4.0
1003 0.0 1.0 2.2 1.0
1004 4.0 3.0 3.5 3.5
問題 : 用 while 設定在 EOF 的時候跳出, 可是程式會把最後一筆資料再讀一次
請問要怎麼加上條件能避免這樣的情形呢 ?
輸出檔案 :
1001 2.625
1002 3.800
1003 1.050
1004 3.500
1004 3.500 <- 會把最後一筆資料再讀一次
Average 1 = 2.940
Average 2 = 2.640
Average 3 = 3.040
Average 4 = 2.960
請按任意鍵繼續 . . .
程式碼 :
#include <iostream>
#include <fstream>
#include <iomanip>
#define INPUT_FILE_LOCATION "e:\\InTest.txt"
#define OUTPUT_FILE_LOCATION "e:\\OUT.txt"
#define ERROR_MSG "Error"
using namespace std;
int main(){
int studentID;
int count=0;
double personalAve;
double g1, g2, g3, g4;
double ave1=0, ave2=0, ave3=0, ave4=0;
double sum1=0, sum2=0, sum3=0, sum4=0;
fstream inFile(INPUT_FILE_LOCATION);
ofstream outFile(OUTPUT_FILE_LOCATION);
if(!inFile || !outFile) cout << ERROR_MSG << endl;
else{
while (!inFile.eof()){
outFile << fixed << setprecision(3);
inFile >> studentID >> g1 >> g2 >> g3 >> g4;
personalAve = (g1 + g2 + g3 + g4)/4;
outFile << studentID << "\t" << personalAve << endl;
count++;
sum1 = sum1 + g1;
sum2 = sum2 + g2;
sum3 = sum3 + g3;
sum4 = sum4 + g4;
ave1 = sum1 / count;
ave2 = sum2 / count;
ave3 = sum3 / count;
ave4 = sum4 / count;
}
outFile << "\nAverage 1 = " << ave1 << endl;
outFile << "Average 2 = " << ave2 << endl;
outFile << "Average 3 = " << ave3 << endl;
outFile << "Average 4 = " << ave4 << endl;
outFile << "\n\n" ;
}
inFile.close();
system("PAUSE");
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 24.218.207.96
→
10/19 09:47, , 1F
10/19 09:47, 1F
→
10/19 09:47, , 2F
10/19 09:47, 2F
→
10/19 09:50, , 3F
10/19 09:50, 3F
→
10/19 09:51, , 4F
10/19 09:51, 4F
→
10/19 09:59, , 5F
10/19 09:59, 5F
→
10/19 10:00, , 6F
10/19 10:00, 6F
→
10/19 10:01, , 7F
10/19 10:01, 7F
推
10/19 10:02, , 8F
10/19 10:02, 8F
→
10/19 10:02, , 9F
10/19 10:02, 9F
→
10/19 10:03, , 10F
10/19 10:03, 10F
→
10/19 10:03, , 11F
10/19 10:03, 11F
→
10/19 10:03, , 12F
10/19 10:03, 12F
→
10/19 10:07, , 13F
10/19 10:07, 13F
→
10/19 10:08, , 14F
10/19 10:08, 14F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章