2017-03-18 4 views
-1

テキストファイルの周波数テーブルの範囲を0から38までの周波数テーブルの範囲にするプログラムを作成しています。しかし、私がプログラムを実行するとき、それが< = 0または> = 10である数を含んでいれば、他のすべての数は加算されますが、負の数は数えられません。私の問題は私のIf文にあると思うが、私はそれを修正する方法を知らない。例えばテキストファイルから負数を数えて周波数テーブルを作成するときのエラー

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

int main() 
{ 
ifstream abc("beef.txt"); 
int num; 
int tem; 
int N; 
int noNum = 0; 
cout << "Class" << " | " << "Frequency" << endl; 
cout << "_________|___________" << endl; 
while (abc >> tem) { 
    noNum++; 
} 
for (num = 0; num < 11; num++) { 
    N = 0; 
    while (abc >> tem) { 
     if (num == tem) { 
      N = N + 1; 
     } 
     if (tem < 0) { 
      N = N + 1; 
     } 
     if (tem > 10) { 
      N = N + 1; 
     }  
    } 
    abc.clear();    //clear the buffer 
    abc.seekg(0, ios::beg); //reset the reading position to beginning 
    if (num == 0) { 
     cout << "<=0" << "  |  " << N << endl; 
    } 
    else if (num == 10) { 
     cout << ">=10" << "  |  " << N << endl; 
    } 
    else { 
     cout << " " << num << "  |  " << N << endl; 
    } 
} 
cout << "The number of number is: " << noNum << endl; 
} 

がある場合は-5テキストに問題が二つあるthis

+0

問題は何ですか?エラーが出ますか?クラッシュ、間違った結果? – Arash

+0

テキストに-5がある場合、<= 0の頻度が1であることが示されていますが、代わりにプログラムは<= 0に0の頻度を、1つおきには1を表示します(画像に示されています) – neX

答えて

0

ようなプログラムを実行するファイル:これは私のコードです。まず、2つのクリアを忘れて、要素の数を数えた後にバッファをリセットします。次に、0より小さい数値と10より大きい数値を常にカウントします。num0または10の場合にのみこれを実行してください。

正しいコードは次のようになります。

ifstream abc("beef.txt"); 
int num; 
int tem; 
int N; 
int noNum = 0; 
cout << "Class" << " | " << "Frequency" << endl; 
cout << "_________|___________" << endl; 
while (abc >> tem) { 
    noNum++; 
} 
for (num = 0; num < 11; num++) { 
    abc.clear();    //clear the buffer 
    abc.seekg(0, ios::beg); //reset the reading position to beginning 
    N = 0; 
    while (abc >> tem) { 
     if (num == tem) { 
      N = N + 1; 
     } 
     if (tem < 0 && num == 0) { 
      N = N + 1; 
     } 
     if (tem > 10 && num == 10) { 
      N = N + 1; 
     } 
    } 
    if (num == 0) { 
     cout << "<=0" << "  |  " << N << endl; 
    } 
    else if (num == 10) { 
     cout << ">=10" << "  |  " << N << endl; 
    } 
    else { 
     cout << " " << num << "  |  " << N << endl; 
    } 
} 
cout << "The number of number is: " << noNum << endl; 
関連する問題