0
votes

J'ai des problèmes avec si les déclarations

Je continue à obtenir "Initializer attendu avant" si "" si "" Erreurs "Si" Si quelqu'un me demandait si quelqu'un peut m'aider avec ce problème? J'ai cette mission de travail qui vous demande essentiellement de gérer un jeu de ciseaux de papier rocheux avec 2 joueurs.

#include <iostream>

int main()
{
  int x, y;

  std::cout << "Player 1 enter rock(1), paper(2), scissors(3):";
  std::cin >> x;
  std::cout << "Player 2 enter rock(1), paper(2), scissors(3):";
  std::cin >> y;
}
if ( x==1 ) and ( y==2 ) {
  std::cout << "Player 2 Wins! Paper Covers Rock!!\n";
}
else if ( x==1 ) and ( y==3 ) {
  std::cout << "Player 1 Wins! Rock Breaks Scissors!!\n";
}
else if ( x==1 ) and (x==1) {
  std::cout << "Tie with rock!\n";
}
else if ( x==2 ) and ( y==3 ) {
  std::cout <<  "Player 2 Wins! Scissors Cut Paper!!\n";
}
else if ( x==2 ) and ( y==1 ) {
  std::cout << "Player 1 wins! Paper Covers Rock!!\n";
}
else if ( x==2 ) and ( y==2 ) {
  std::cout << "Tie with Paper!\n"; 
}
else if ( x==3 ) and ( y==1 ) {
  std::cout << "Player 2 wins! Rock Breaks Scissors!!\n";
}
else if ( x==3 ) and ( y==2 ) {
  std::cout << "Player 1 wins! Scissors Cut Paper!!\n";
}
else if ( x==3 ) and ( y==3 ) {
  std::cout << "Tie with Scissors!";
}
else if (x>3){
 std::cout << "Invalid move!!\n";
}
else if (y>3){
  std::cout << "Invalid move!!\n";
}
return 0
}


5 commentaires

Vous avez fermé le corps de principal () avant le premier si


Utilisation et au lieu de && en C ++ est plutôt atypique. Le premier conduit à des problèmes avec la priorité de l'opérateur dans des expressions plus compliquées.


C'est pourquoi il est important de dédenter correctement.


Oh ok où devrais-je placer les parenthèses?


La première étape consiste à supprimer l'errance } après std :: cin >> y;


4 Réponses :


2
votes

Tout le code doit être dans {} Bretelles de la fonction principale .

si le code doit avoir () entre parenthèses enveloppant toute l'expression. C'est donc si ((x == 1) && (x == 2)) {...} au lieu de si (x == 1) && (x == 2) { ...} .

Aussi, utilisez && au lieu de et et || au lieu de ou . .


0 commentaires

2
votes

Retirez le brace de fermeture

if ( ( x==1 ) and ( y==2 ) ) {


4 commentaires

Mieux vaut garder && dans la réponse au lieu de mal syntaxiquement erroné et


si ((x == 1) et (y == 2)) {


Ah! Pardon. Je ne savais jamais que nous pouvons utiliser et .


@ Wander3r en C ++ Ceci est un jeton alternatif. En C, vous devez inclure l'en-tête pour utiliser une macro comme une telle jeton.



0
votes
#include <iostream>
using namespace std;
int main()
{
  int x, y;

  cout << "Player 1 enter rock(1), paper(2), scissors(3):";
  cin >> x;
  cout << "Player 2 enter rock(1), paper(2), scissors(3):";
  cin >> y;

if ( x == 1  &&  y == 2 ) {
  cout << "Player 2 Wins! Paper Covers Rock!!\n";
}
else if ( x == 1  &&  y == 3 ) {
  cout << "Player 1 Wins! Rock Breaks Scissors!!\n";
}
else if ( x == 1  && y == 1) {
  cout << "Tie with rock!\n";
}
else if ( x == 2  &&  y == 3 ) {
  cout <<  "Player 2 Wins! Scissors Cut Paper!!\n";
}
else if ( x == 2  &&  y == 1 ) {
  cout << "Player 1 wins! Paper Covers Rock!!\n";
}
else if ( x == 2  &&  y == 2 ) {
  cout << "Tie with Paper!\n"; 
}
else if ( x == 3  &&  y == 1 ) {
  cout << "Player 2 wins! Rock Breaks Scissors!!\n";
}
else if ( x == 3  &&  y == 2 ) {
  cout << "Player 1 wins! Scissors Cut Paper!!\n";
}
else if ( x == 3  &&  y == 3 ) {
  cout << "Tie with Scissors!";
}
else

  cout << "Invalid move!!\n";

return 0;
}
I had my professor help me but thanks for the help guys!!

0 commentaires

0
votes

"Erreur d'indentation" Placez simplement le support de fermeture de la fonction principale de manière appropriée à la fin.

int main() 
{

//all your logic here
. 
. 

} // closing brace


0 commentaires