Initiliser une chaine de caratere

Résolu/Fermé
yoshiro Messages postés 497 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 18 avril 2018 - 17 nov. 2008 à 00:37
yoshiro Messages postés 497 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 18 avril 2018 - 17 nov. 2008 à 21:52
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!!

9 réponses

Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
17 nov. 2008 à 01:13
Bonsoir Yoshiro,
while (reponse == rep) : regarde du côté de la fonction strcmp.

Cordialement,
0
yoshiro Messages postés 497 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 18 avril 2018 64
17 nov. 2008 à 01:15
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
17 nov. 2008 à 01:25
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
17 nov. 2008 à 01:31
é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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
17 nov. 2008 à 01:41
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 497 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 18 avril 2018 64
17 nov. 2008 à 01:33
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
17 nov. 2008 à 01:47
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 497 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 18 avril 2018 64
17 nov. 2008 à 02:00
ç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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
17 nov. 2008 à 02:05
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 497 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 18 avril 2018 64
17 nov. 2008 à 21:34
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
17 nov. 2008 à 21:46
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 497 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 18 avril 2018 64
17 nov. 2008 à 21:52
MERCI BEAUCOUP.
SUPER çA FONCTIONNE. COOL!!!
0