Initiliser une chaine de caratere

Résolu
yoshiro Messages postés 496 Date d'inscription   Statut Membre Dernière intervention   -  
yoshiro Messages postés 496 Date d'inscription   Statut Membre Dernière intervention   -
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!!
A voir également:

9 réponses

Marco la baraque Messages postés 996 Date d'inscription   Statut Contributeur Dernière intervention   329
 
Bonsoir Yoshiro,
while (reponse == rep) : regarde du côté de la fonction strcmp.

Cordialement,
0
yoshiro Messages postés 496 Date d'inscription   Statut Membre Dernière intervention   65
 
tu peux expliquer s'il te plaît car je ne suis pas très douer
je débute.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yoshiro Messages postés 496 Date d'inscription   Statut Membre Dernière intervention   65
 
ok merci bcp ça marche!!
Mais je voudrais savoir quel code on utilise pour choisir un nombre aléatoirement!
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
yoshiro Messages postés 496 Date d'inscription   Statut Membre Dernière intervention   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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
yoshiro Messages postés 496 Date d'inscription   Statut Membre Dernière intervention   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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
yoshiro Messages postés 496 Date d'inscription   Statut Membre Dernière intervention   65
 
MERCI BEAUCOUP.
SUPER çA FONCTIONNE. COOL!!!
0