Initiliser une chaine de caratere

Résolu
yoshiro Messages postés 532 Statut Membre -  
yoshiro Messages postés 532 Statut Membre -
Bonjour,
voila j'essaie d'écrire un programme qui demande à l'utilisateur de saisir un nombre, ce nombre est calculé et il peut saisir autant de fois qu'il veux. Voici le code:

......
int nb;
char reponse[]="oui";

printf("\n Entrer un nombre compris entre 0 et 100");
scanf("%d",&nb);
nb=nb+1;
printf("\n Voulez vous recommencez ?");
scanf("%s",&rep);
while (reponse == rep)
{
printf("\n Entrer un nombre compris entre 0 et 100");
scanf("%d",&nb);
nb=nb+1;
}
.......
ça ne marche pas!!
PKOI???
MERCI D'AVANCE!!
Configuration: Windows XP
Firefox 3.0

9 réponses

  1. Marco la baraque Messages postés 1030 Statut Contributeur 329
     
    Bonsoir Yoshiro,
    while (reponse == rep) : regarde du côté de la fonction strcmp.

    Cordialement,
    0
  2. yoshiro Messages postés 532 Statut Membre 65
     
    tu peux expliquer s'il te plaît car je ne suis pas très douer
    je débute.
    0
  3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut,
    Tu n'as pas initialisé la chaîne rep. : char rep[4];
    On utilise pas scanf("%s",&rep); mais scanf("%s",rep); Mais mieux encore, je te conseille d'utiliser fgets pour indiquer la taille.
    En C, on compare les chaînes de caractères avec strcmp de string.h ou mieux encore strncmp
    J'ai pas bien compris ce que tu voulais faire avec ton code, mais l'algorithme me paraît faux.
    J'utiliserais pour ma part : do ... while.

    Ce qui donne au final :

    #include <stdio.h>
    #include <string.h>
    
    int main(void){
        int nb;
        char reponse[]="oui";
        char rep[4];
    
        do{
            printf("\nEntrer un nombre compris entre 0 et 100 : ");
            scanf("%d",&nb);
            nb=nb+1;
            printf("\n Voulez vous recommencez ? ");
            scanf("%4s",rep);
        }while (strncmp(reponse,rep,sizeof(rep))==0);
    
        return 0;
    }
    

    Si t'as des questions, n'hésite pas.
    Note : N'oublie pas de poster ton code avec int main() et d'utiliser la balise "code" ( à droite de souligner ) ;)
    Cdlt
    0
  4. Utilisateur anonyme
     
    écivez-vous ces codes dans bloc-note ?
    en quel format l'enregistrez-vous .bat, .exe ???

    désoler de mon ignorance, je débute...
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Pour ma part, j'utilise vi. Mais après, tu peux utiliser ce que tu veux.
      Si t'es sur windows, tu peux utiliser l'excellent notepad++.
      Je ne te conseille pas bloc-note bien que cela fonctionne, puisqu'il ne t'apportera aucune coloration syntaxique et aucune indentation donc pas pratique, surtout pour un débutant.
      Le programme, tu l'enregistres avec l'extension .c
      Ensuite, tu as besoin d'un compilateur (un programme qui va traduire le code C en instruction binaire (compréhensible par la machine), et tu obtiendras un .exe (exécutable). Pour un compilateur, tu peux voir du côté de devCpp.

      Cdlt
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. yoshiro Messages postés 532 Statut Membre 65
     
    ok merci bcp ça marche!!
    Mais je voudrais savoir quel code on utilise pour choisir un nombre aléatoirement!
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Pour choisir un nombre aléatoire :
      T'inclues en header
      #include <time.h>
      #include <stdlib.h>
      

      Et encode ça donne :
      srand(time(NULL)); //initialisation de la suite pseudo aléatoire
      int min = 0;
      int max = 10;
      double a = ((double)rnd() / RAND_MAX * (max - min + 1)) + min; //nombre aléatoire entre min et max.
      

      Cdlt
      0
  7. yoshiro Messages postés 532 Statut Membre 65
     
    ça ne marche pas voici le code

    #include <time.h>
    #include <stdlib.h>
    ...
    int chiff,x;
    const int min=1;
    const int max=2;

    printf ("salut");

    srand(time(NULL));
    x = ((double)rnd() / RAND_MAX * (1 + max - min) + min);

    if (x == chiff)
    {
    printf("C'est vous qui commencez le premier");
    }
    else
    {
    printf ("C'est l'ordinateur qui commence le premier");
    }
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Normal, tu ne demandes pas à l'utilisateur de définir chiff.
      Et si tu disais ce que tu souhaites faire exactement ? Le jeu du nombre ?
      Sinon, je répète, quand tu postes, mets ton code entre deux balise "code" (le bouton est à droite du bouton souligner). Et poste également le prototype main et compagnie.
      Cdlt
      0
  8. yoshiro Messages postés 532 Statut Membre 65
     
    ok
    voici le programme

    #include <stdlib.h>
    #include <time.h>
    #include <string.h>
     main()
    {
          int nb,b,j=1;
          char reponse[]="oui";
          char rep[4];
          const int min=0;
          const int max=100;
    
          srand(time(NULL));
          b = ((double)rnd() / RAND_MAX * (1 + max - min) + min);
    
          printf("\n JEU DU NOMBRE CACHER");
          printf("\n voulez vous rejouer ? ");
          scanf("%s",rep);
          printf("\n Entrer un nombre compris entre 0 et 100");
          printf("\n Essai %d :",j);
          scanf("%d",&nb);
           while (strncmp(reponse,rep,sizeof(rep))==0)
           {
          while (j < 7  && nb != b)
          {
                if ( nb< 0 || nb>100)
                {
                     printf("\n le nombre cache doit etre  compris entre 0 et 100");
                     printf("\n Essai %d :",j);
                     scanf("%d",&nb);
                     j=j+1;
                }
                if ( nb > b)
                {
                     j=j+1;
                     printf("\n Plus petit");
                }
                     else 
                     {
                          j=j+1;
                         printf("\n plus grand");
                     }
                     
                         printf("\n Entrer un nombre compris entre 0 et 100");
          printf("\n Essai %d :",j);
          scanf("%d",&nb);         
                         }
                  if ( j == 7)
                  {
                       printf("\n TCHO PERDU!!");
                        printf("\n Le nombre a trouve etait: %d :",b);
                  }   
                  else
                  {
                            printf(" \n bravo tu la enfin trouvee!!!");
                            printf("\n apres %d essais",j);
                   } 
                             printf("\n voulez vous rejouer ? ");
                             scanf("%s",rep);
                             
                             if (reponse == rep)
                             {
                                                srand(time(NULL));
                                                xb= ((double)rnd() / RAND_MAX * (1 + max - min) + min);
    
                                                 j=1;
                        }
                        }
          system ("pause");
          return 0;
    }
    


    Le code du nombre aléatoirement ne marche pas !
    help!!!
    0
  9. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut,
    Je t'ai corrigé deux trois trucs.
    Pour continuer, il faut taper 1 au lieu de 'oui'. Sinon cela complique bien le code.

    Dis moi si ça marche :
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <string.h>
    int main()
    {
        int nb,b,j=1;
        int rep;
        const int min=0;
        const int max=100;
    
        srand(time(NULL));
        b = ((double)rand() / RAND_MAX * (1 + max - min) + min);
    
        printf("\n JEU DU NOMBRE CACHER");
        printf("\n voulez vous rejouer ? (pour oui taper 1)");
        scanf("%d",&rep);
        printf("\n Entrer un nombre compris entre 0 et 100");
        printf("\n Essai %d :",j);
        scanf("%d",&nb);
        
        while (rep)
        {
            while (j < 7  && nb != b)
            {
                if ( nb< 0 || nb>100)
                {
                    printf("\n le nombre cache doit etre  compris entre 0 et 100");
                    printf("\n Essai %d :",j);
                    scanf("%d",&nb);
                    j=j+1;
                }
                if ( nb > b)
                {
                    j=j+1;
                    printf("\n Plus petit");
                }
                else 
                {
                    j=j+1;
                    printf("\n plus grand");
                }
    
                printf("\n Entrer un nombre compris entre 0 et 100");
                printf("\n Essai %d :",j);
                scanf("%d",&nb);         
            }
            if ( j == 7)
            {
                printf("\n TCHO PERDU!!");
                printf("\n Le nombre a trouve etait: %d :",b);
            }   
            else
            {
                printf(" \n bravo tu la enfin trouvee!!!");
                printf("\n apres %d essais",j);
            } 
            printf("\n voulez vous rejouer ? ");
            scanf("%d",&rep);
    
            if (rep)
            {
                srand(time(NULL));
                b= ((double)rand() / RAND_MAX * (1 + max - min) + min);
    
                j=1;
            }
        }
        return 0;
    }
    
    
    
    0
  10. yoshiro Messages postés 532 Statut Membre 65
     
    MERCI BEAUCOUP.
    SUPER çA FONCTIONNE. COOL!!!
    0