2016-10-27 15 views
-4

コンパイルしていない関数でループに問題があります。私は、それが条件に文字列を含むという事実と関係していると思うが、わからない。ここで int main関数でコンパイルして実行するループは、別の関数に入ればコンパイルされません

は文句を言わないif文で

int numWins(string team_array, string str) 
{ 
    int i = 0; 
    int count = 0; 
    while (i <= 119) { 
     if (str == team_array[i]) { 
      count += 1; 
     } 
     i += 1; 
    } 
} 

私は問題を抱えています一部である条件をコンパイルする機能です。私は、その行でコンパイルしようとすると、大量のエラーが発生します。

しかし、ループが、それは私のint型のメイン機能であるとき、ループは次のようになると、この

int main() 
{ 
    int i = 0; 
    int count; 
    string teams[120]; 
    string uteam; 

    ifstream infile; 
    infile.open("worldserieswinners.txt"); 

    if (infile.fail()) //if the input file failed to open 
    { 
     cout << "input file did not open" << endl; 
     exit(-1); //stop execution of the program immediately 
    } 

    string str; 
    while (i <= 118) //might need to be 119 
    { 
     getline(infile, str); 
     teams[i] = str; 
     i += 1; 
    } 
    cout << "Enter a team: "; 
    getline(cin, str); 
    count = 0; 
    i = 0; 
    while (i <= 119) { 
     if (str == teams[i]) { 
      count += 1; 
     } 
     i += 1; 
    } 
    cout << "The " << str << " have won the World Series " << count << " time(s)."; 
} 

のようにコンパイルし、それがエラーなしで出力のためにうまく適切な値を返します。助言がありますか?

編集:特定のコンパイラエラー私は取得していますが次のとおりです。

[エラー]のための一致なし '演算子=='(オペランドの型が 'のstd ::文字列{別名のstd ::のbasic_string}' と '文字' は、 )

+0

コンパイルエラーを表示できますか? 'numWins'から何も返さないことにも注意してください。 –

+3

コンパイラのエラーはあなたの画面上のあなたの目の前にあります。ここにあなたの質問にそれらを含めることに失敗する理由は絶対にありません。私たちが**あなたの問題**を解決するために**私たちの時間を寄付してほしいなら、そうするために必要な情報を私たちに与えてください。 –

+0

さらに悪いことに、実際に問題のある完全なコードを提供していません。 numWinsを呼び出すために 'main'をどのように変更したのか、どうすれば分かりますか? –

答えて

2
int numWins (string team_array, string str) 

この関数は2つのパラメータをとり、両方とも文字列です。

if (str == team_array[i]) 

strteam_array[i]charで、std::stringです。 std::string全体を単一のcharと比較することはできません。

team_arrayのパラメータは、おそらくstring *team_arrayまたはstring team_array[]である必要があります。

+0

コントロールが返されないために非空白関数の最後から流れ出ることに言及することはおそらく良い考えです。 –

関連する問題