2012-04-07 10 views
0

OK、ここにバスケットボールのプレーヤーの入力を求めるプロンプトが表示されます。ユーザーがプレーヤーの名前を入力するようになった後、実際には文字列であることを確認するために入力を検証します。まあ、検証は常にtrueに関係なく実行し、プログラムを終了させます。これは私の他の入力検証では起こりません。文字列だけです。なぜそれがいつも真実を発揮して、プログラムを終了させるのかという考えはありますか?ありがとうございました。あなたはその行の最後に;を持って入力の検証はtrueに関係なく実行されますか?

#include <iostream> 
#include <string> 
#include <iomanip> 
#include <cstdlib> 
using namespace std; 


//struct of Basketball Player info 
struct BasketballPlayerInfo 
{ 
    string name; //player name 

    int playerNum, //player number 
     pointsScored; //points scored 

}; 

int main() 
{ 
    int index, //loop count 
     total = 0; //hold total points 
    const int numPlayers = 5; //nuymber of players 
    BasketballPlayerInfo players[numPlayers]; //Array of players 

    //ask user for Basketball Player Info 
    cout << "Enter the name, number, and points scored for each of the 5 players.\n"; 

    for (index = 0; index < numPlayers; index++) 
    { 
     //collect player name 
     cout << " " << endl; 
     cout << "Enter the name of player # " << (index + 1); 
     cout << ": "; 

     //input validation 
     if((!(getline(cin, players[index].name)))); <----validation goes wrong! 
     { 
      cout << "Player Name must be alphabetical characters only!\n"; 
      cout << "Program terminating please start over." << endl; 
      system("pause"); 
      exit(0); 
     } 

     getline(cin, players[index].name); 

     //collect players number 
     cout << "Enter the number of player # " << (index + 1); 
     cout << ": "; 

     //input validation 
     if(!(cin >> players[index].playerNum)) 
     { 
      cout << "Player Name must be numeric characters only!\n"; 
      cout << "Program terminating please start over." << endl; 
      system("pause"); 
      exit(0); 
     } 
     //collect points scored 
     cout << "Enter points scored for player # " << (index + 1); 
     cout << ": "; 

     //input validation 
     if(!(cin >> players[index].pointsScored)) 
     { 
      cout << "Player Name must be numeric characters only!\n"; 
      cout << "Program terminating please start over." << endl; 
      system("pause"); 
      exit(0); 
     } 

     cin.ignore(); 
    } 

    //display 
    cout << "\n"; 
    cout << "Here is the information for each player: \n"; 
    cout << fixed << showpoint << setprecision(2) << setw(5); 
    cout << "\n"; 
    cout << "   \tName\tNumber\tPoints\n"; 
    cout << "------------------------------------------------" << endl; 

    for(index = 0; index < numPlayers; index++) 
    { 
     cout << "Player # " << (index + 1); 
     cout << ": \t" << players[index].name << "\t" << players[index].playerNum << "\t" << players[index].pointsScored << endl; 
     cout << "------------------------------------------------" << endl; 

    } 

    //display total points scored by all players 
    for(index = 0; index < numPlayers; index++) 
    { 
     //hold total 
     total += players[index].pointsScored; 
    } 

    cout << "Total Points scored are: " << total << endl; 

system("pause"); 
return 0; 

} 
+1

あなた自身がそれを指摘しました! –

+0

問題を引き続き示している最小値まで下げてください。 –

答えて

6

は、ここに私のコードです。

+0

うわー、見過ごされるかもしれない小さなもの!それを指摘していただきありがとうございます! – Gmenfan83

+0

コンパイルが 'if(...);に気づくと思います。 {...} 'と警告します。 –

+1

@ Gmenfan83:もっと正確に言えば、C++でできることは非常に疑問の余地があります。完全に合法で有用なので、他の言語よりも難しい動作を見つけるのが難しくなります。 – Puppy

関連する問題