Besoin d'aide pour un petit probleme dans mon programme

Fermé
ilyessils Messages postés 6 Date d'inscription samedi 2 décembre 2017 Statut Membre Dernière intervention 23 décembre 2017 - Modifié le 23 déc. 2017 à 22:59
 Utilisateur anonyme - 24 déc. 2017 à 00:00
Bonjour,
j'ai besoin d'aide s'il vous plait ; ca m'affiche tout le temps que j'ai perdu !!

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>

int main ()
{
 int couleur; // pour le choix des couleurs
 int choix ; // pour le choix des mises 
 
 int i ;
 
 int rouge[18]={1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36};
 int noir[18]={2,4,6,8,10,11,13,15,17,20,22,24,26,28,29,31,33,35};
 int nb_aleatoire ; 
 
 printf("1-noir \t 2-rouge");
 printf("\nVotre choix est : ");
 scanf("%d",&couleur);
 switch(couleur) {
  case 1 :{
   // afficher le numero aleatoire 
        {
                    srand (time (NULL));
                       nb_aleatoire = rand () % 36 ;
                       printf("\nle nombre est : %d",nb_aleatoire);
                 }
                 noir[i]=0;
                 for(i=0;i<=18;i++){
                  
                  if(nb_aleatoire==noir[i])
      {
      printf("\nvous avez gagne");  
      break;
      }
    
                  else 
                  
      printf("\nvous avez perdu1");
                  break;
     }
                 
   break;
  }
  case 2 :{
   // afficher le numero aleatoire 
        {
                    srand (time (NULL));
                       nb_aleatoire = rand () % 36 ;
                       printf("\nle nombre est : %d",nb_aleatoire);
                 }
                 rouge[i]=0;
                 for(i=0;i<=18;i++){
                  
                 if(nb_aleatoire==rouge[i])
                  printf("\nvous avez gagne");
                  else 
                  printf("\nvous avez perdu2");
                  break;
     }
   break;
  }
 default: printf("ce choix n'existe pas'");
}
 
 
}


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

2 réponses

jordane45 Messages postés 38289 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 novembre 2024 4 703
23 déc. 2017 à 23:11
Bonjour,

Je ne fais pas de "C" .. mais .... je doute que tes doubles accolades ouvrantes soient bonnes...
{
   // afficher le numero aleatoire 
        {

 case 2 :{
   // afficher le numero aleatoire 
        {



La bonne syntaxe pour un SWITCH en C étant :
switch (Variable) {

case Valeur1 :
 Liste d'instructions;
 break;

case Valeur2 :
 Liste d'instructions;
 break;

default: 
 Liste d'instructions;

}

0
Il n'y a pas de problème à utiliser un bloc d'instructions { } là où une instruction est attendue, dès lors que les blocs sont correctement imbriqués. On peut ouvrir autant d'accolades qu'on veut derrière un case, pourvu qu'on les referme convenablement.
0
Utilisateur anonyme
23 déc. 2017 à 23:57
Bonsoir

Tu as plusieurs problèmes.

Tu initialises noir[i] ou rouge[i] avant le début de la boucle for : quelle est la valeur de i ? Qu'est-tu en train d'initialiser ? Tu avais déjà initialisé au départ les tableaux rouge[] et noir[] et c'était (presque) bien.

Tu as initialisé les tableaux avec des valeurs de 1 à 36 mais rand() % 36, ça va de 0 à 35

Tu fais une boucle for, mais dès le premier passage (i=0) que le test soit bon ou pas, tu affiches un résultat et tu quittes ta boucle. Tu ne devrais la quitter que si le test est bon ; s'il est mauvais, tu devrais continuer pour tester les autres valeurs avant de dire que c'est perdu.
0