1

ユーザーに整数を入力するように要求し、定義済みのテキスト ファイル (整数のみを含む) を検索して、その特定の整数の出現回数を検索し、結果を出力するプログラムを作成しようとしています。これまでにコーディングしたものは次のとおりです(実行しても機能しません)が、ここで正しい方向に進んでいるかどうか、またはファイルからすべての整数を読み取ろうとする必要があるかどうかはわかりません配列に入れるか、まったく別のことをすることさえできます。これは宿題用であることを付け加えておきます。完全な解決策ではなく、ポインタを探しているだけです。考えられる限りのことを試しましたが、あまり進歩していません。誰かが私を正しい方向に向けることができますか? 前もって感謝します。

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

using namespace std;

int main()
{
    int x, y;
    int sum1 = 0;
    ifstream infile ("file.txt");
    if (infile)
        cout << "File successfully opened" << endl;
    else
    {
        cout << "Can't open file" << endl;
        exit (EXIT_FAILURE);
    }
    cout << "Input number: ";
    cin >> x;
int number;
while(!infile.eof()) //this is where my problems start
         {
           infile >> number;
         }
while(number = x) //doesn't seem to be working, not sure if I should even be using
                  //a while statement
         {
           sum1++;
         }
        cout << sum1++ << " " ;
}
4

2 に答える 2

4

=比較ステートメントでsingle を使用しています:while(number = x)これは間違っています。==比較して使う

次のようにします。

while(number == x)  //note ==
             ^^

他に注意すべきことは、while論理的には2回使用し!infile.eof()ていることであり、期待した結果が得られない可能性があるため、使用も良くありません(元より1回多い)

このコードを試してください:

int number;

while (true) {

    infile >> number;
    if( infile.eof() )      //This line will help in avoiding processing last value twice 
      break;

    if (number == x)
    {
        sum1++;
        cout << sum1++ << " " ;
    }
}
于 2013-07-25T19:35:18.317 に答える
3

これを行う:

// ...
int number;
infile >> number;
while(!infile.eof())
{
    if (number == x)
    {
        sum1++;
    }
    infile >> number;
}
cout << sum1;
于 2013-07-25T19:35:39.503 に答える