2014-11-02 157 views
-2

我試圖從我之前在程序中輸入的文本文件中讀取測試分數時遇到問題。問題是它說我的變量未定義,但我想我已經定義了它們。使用「ofstream」的程序的寫作部分完美地工作,給了我一個文本文件格式化的輸出。從文本文件C++中讀取輸入

1001 21 22 23 24 
1002 25 26 27 28 
1003 29 30 31 32 

我的目標有以下原則: 2.從文件中讀取數據。 a。使用嵌套循環。 b。外部循環將是一個「while」循環,內部循環將是一個「for」循環(4次測驗)。

下面是我的代碼如下。希望有人能看到我要出錯的地方,並指向正確的方向:

#include <iostream> 
#include <cmath> 
#include <fstream> 
#include <iomanip> 
using namespace std; 

int main() 
{ 
    int numStudents, numTests = 4, studentCount = 1, count = 1, test = 1, score = 0, testCount = 1, 
    int stuID; 
    double average; 
    double total; 
    ofstream outputFile; 
    ifstream inputFile; 

    cout << fixed << setprecision(2); 

    //Open file scores.txt 
    outputFile.open("Scores.txt"); 

    //Get the number of students 
    cout << "How many students? "; 
    cin >> numStudents; 


    while (studentCount <= 3) 
    { 
     cout << "Enter Student ID: "; 
     cin >> stuID; 
     outputFile << stuID << " "; 

     for (test = 1; test <= numTests; test++) 
     { 

      cout << "Enter grade for quiz " << test << ": "; 
      cin >> score; 
      outputFile << score << " "; 
     } 
     outputFile << endl; 
     studentCount++; 

    } 

     outputFile.close(); //closes Output File 

     inputFile.open("Scores.txt"); //opens Output File 


    while (studentCount <= 3) 
     { 

     for (test = 1; test <= numTests; test++) 
     { 
      inputFile >> score; 
      total += score; 
     } 

     average = total/numTests; 
     inputFile >> stuID; 
     cout << "The average for student " << stuID << " is " << average << endl; 

     studentCount++; 
     } 

    inputFile.close(); //closes Input File 





    system("pause"); 
    return 0; 
} 

感謝您抽出寶貴時間來幫助我。

+1

你得到編譯錯誤或運行時錯誤? 「它說我的變量未定義」是什麼意思? – irrelephant 2014-11-02 21:20:01

+0

除非我誤解,否則您將'score'添加到'total',而不給'total'一個初始值。 – druckermanly 2014-11-02 21:20:01

+0

如果您不明白您遇到的錯誤,請考慮發佈錯誤的整個文本,而不是嘗試總結它。 – 2014-11-02 21:24:28

回答

0

你正在一個很瑣碎的錯誤: -

你先while循環: -

while (studentCount <= 3) 

在這之後你的第二個while循環

while (studentCount <= 3) 

由於studentCount已經4它不會進入這個循環。

您需要重新初始化studentCount爲第二循環: -

studentCount = 1; 
while (studentCount <= 3) 
+0

謝謝你的幫助。我一直盯着這段代碼,這些東西一定是逃過了我的眼睛! – 2014-11-02 22:15:56

0

int numStudents, numTests = 4, studentCount = 1, count = 1, test = 1, score = 0, testCount = 1, 

結束時的逗號應該是一個分號。

0

您的第一行int聲明不會以';'結尾。 另外,在讀取inputFile和while循環之前,應將StudentCount重置爲1。

+0

謝謝!不能相信我沒有仔細檢查。 – 2014-11-02 22:19:44

0

一些我看到的bug: - 1. int的聲明,我很驚訝,你的編譯器做別無分號沒有指出那個錯誤。 2.您沒有重新初始化,第二循環的變種studentcount由於第一循環將其值設置< 3. 3.你有你的總初始化爲0(雙總= 0;)