2016-09-12 16 views
0

はい、これはクラスの質問ですが、私は宿題をしてくれません。私はどこに間違っているのか把握するだけです。C++のファイルから特定の数字を数える方法

Lab 1で作成されたファイルを入力ファイルとして使用するプログラムを作成します。このプログラムは、1000から10000までの値のユーザー入力を取得し、ユーザーの値が入力ファイルに何回表示されるかをカウントします。画面出力を使用してユーザーに報告します。

は、ここでいくつかの失敗の後に私が持っているコードです:

#include <iostream> 
#include <fstream> 


using namespace std; 

int count(int number, int input, int length) 
{ 
    int counter = 0; 
    for(int i = 0; i < length; i++) 
     if(input == number) 
      counter++; 
    return counter; 
} 

int main() 
{ 
    int num,input; 

    ifstream fin; 
    fin.open("ran_num.txt"); 
    if(fin.fail()) 
    { 
     cout<<"Input file opening failed."<<endl; 
     cin.get(); 
    } 

    cout<<"Enter a number between 1000 to 10000:"; 
    cin>>num; 

    fin>>input; 

    cout<<num<<"appears "<<count(num, input, 3000)<<" times in the file."<<endl; 

    return 0; 
} 

私は完全に失われたんだとちょうど私が値inputerユーザーをカウントするために使用するかを把握する必要があります。どんな助けもありがとう!

これは私が今持っているものです。私のプログラムはファイル全体を読むことができるようになりましたが、私はまだユーザが入力した数をどのようにカウントするか分かりません。

#include <iostream> 
#include <fstream> 
#include <iomanip> 


using namespace std; 

int main() 
{ 
    ifstream fin("ran_num.txt"); 
    int num, user_input; 

    cout<<"Enter a number between 1000 to 10000:"; 
    cin>>user_input; 

    while(fin>>num) 
    { 
     if(num == user_input) 
     { 
      cout<<count++; 
     } 
    } 
    return 0; 
} 
+0

あなたのプログラムは、正確には間違っていますか? –

+2

あなたの質問に表示されているコードを取り、あなたのコードをあなたのラバーダックに説明してください(https://en.wikipedia.org/wiki/Rubber_duck_debugging)。私はあなたのラバーダックがあなたがどこに間違っていたかを伝えることができるという十分な自信を持っています。 –

+0

プログラムを実行すると、入力した番号はカウントされません。私はファイルに少なくとも1回は数字を入力し、その数字は毎回0回表示されることを確認します。 – mimiholli

答えて

0

これは私が持っている正しいコードです。それは今、完璧に動作します!

#include <iostream> 
#include <fstream> 
#include <iomanip> 


using namespace std; 

int main() 
{ 
    ifstream fin("ran_num.txt"); 
    int num, user_input, count; 

    cout<<"Please enter a number from 1000 to 10000:"; 
    cin>>user_input; 

    if (fin.is_open()) 
    { 
     while (fin >> num) 
     { 
      if (num == user_input) 
      { 
       ++count; 
      } 
     } 
     fin.close(); 
     cout<<user_input<<" occurs "<<count<<" times."; 
    } 
    else 
    { 
     cout<<"Unable to open file."; 
    } 

    fin.close(); 
    return 0; 
} 
0

あなたのプログラムがファイルを開いていますか? ファイルが正しく開かれているかどうかを確認する必要があります。また、使用後もファイルを閉じる必要があります。 また、インクリメントする前にcountを出力しています。 私はあなたのwhileループをこのように変更することをお勧め:

if (fin.is_open()) 
{ 
    while (fin >> num) 
    { 
     if (num == user_input) 
     { 
      ++count; 
     } 
    } 
    fin.close(); 
    cout << count; 
} 
else 
{ 
    cout << "Unable to open file"; 
} 
関連する問題