Partage
  • Partager sur Facebook
  • Partager sur Twitter

strtod - Conversion d'une chaîne ASCII en réel (double)

    14 juin 2006 à 19:14:19

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int
    main ()
    {
      system("COLOR 1F");
            // -----------------------------------
            // declaration de variable
            char niveau = 0, nbMystere = 0, nbEntre = 0;
            long min = 1, max = 0;


    // -----------------------------------
    // demande du niveau de difficulte

            do
            {
                        printf ("--------------------\n");
                        printf ("Jeux du plus ou moin\n");
                        printf ("--------------------\n\n");
                        printf ("Choix de difficulte\n");
                        printf ("-----------------------\n");
                        printf ("| Niveau 1 | 1 a 100  |\n");
                        printf ("| Niveau 2 | 1 a 500  |\n");
                        printf ("| Niveau 3 | 1 a 1000 |\n");
                        printf ("-----------------------\n\n");
                        printf ("Entrer un chiffre de 1 a 3 svp.--> ");
    // saisie
                        scanf ("%s", &niveau);
                        system("cls");
                   }
            while (niveau < 49 || niveau > 51);

            if (niveau = 49)
            {
                    max = 100;
            }
            else if (niveau = 50)
            {
                    max = 500;
            }
            else if (niveau = 51)
            {
                    max = 1000;
            }
            else
            {
                    printf ("erreur niveau");
            }
    //  genere un nombre mystere

    nbMystere = genereNombre(min, max);
    do
    {
    printf ("--------------------\n");
    printf ("Jeux du plus ou moin\n");
    printf ("--------------------\n\n");
    printf ("Quel est le nombre mystere?  ");
    scanf ("%s", &nbEntre);
    system("cls");
    }
        while ( isdigit(nbEntre) == 0);//verification chiffre



            return 0;
    }





    maintenant je cherche a transformer la valeur de la variable nbEntre
    qui est une chaine de caractere qui represente un nombre ASCII en nombre reel si possible j'ai trouvé une fonction (strtod - Conversion d'une chaîne ASCII en réel (double).) mais je ni comprend strictement rien si quelqu'un peut m'aider :)
    • Partager sur Facebook
    • Partager sur Twitter
      14 juin 2006 à 20:07:49

      Qu'est ce que tu appelles "nombre ASCII" ou "chaine ASCII" ? Pour moi, c'est un encodage de caractère...
      • Partager sur Facebook
      • Partager sur Twitter
        14 juin 2006 à 20:18:26

        en fait mon scanf ("%s", &nbEntre);
        garde le nombre entre au clavier sous la forme ASCII ex: 1 = 49 en ASCII
        je veut la convertir
        • Partager sur Facebook
        • Partager sur Twitter
          14 juin 2006 à 20:40:40

          Pourquoi tu t'embêtes la vie comme ca ?

          • Je pense qu'ici un type int est plus approprie (surtout le niveau 3)
          • dans tes scanf, pourquoi utilises tu "%s" pour saisir un char, c'est plutôt %c
          • pour une condition, on utilise deux =
          • Partager sur Facebook
          • Partager sur Twitter
            14 juin 2006 à 23:16:34

            #include <stdio.h>
            #include <stdlib.h>
            #include <string.h>
            int
            main ()
            {
              system("COLOR 1F");
                    // -----------------------------------
                    // declaration de variable
                    int niveau = 0;
                    long min = 1, max = 0, nbMystere = 0;
                    long nbEntre = 0;


            // -----------------------------------
            // demande du niveau de difficulte

                    do
                    {
                                printf ("--------------------\n");
                                printf ("Jeux du plus ou moin\n");
                                printf ("--------------------\n\n");
                                printf ("Choix de difficulte\n");
                                printf ("-----------------------\n");
                                printf ("| Niveau 1 | 1 a 100  |\n");
                                printf ("| Niveau 2 | 1 a 500  |\n");
                                printf ("| Niveau 3 | 1 a 1000 |\n");
                                printf ("-----------------------\n\n");
                                printf ("Entrer un chiffre de 1 a 3 svp.--> ");
            // saisie
                                scanf ("%c", &niveau);
                                system("cls");
                           }
                    while (niveau < 49 || niveau > 51);

                    if (niveau == 49)
                    {
                            max = 100;
                    }
                    else if (niveau == 50)
                    {
                            max = 500;
                    }
                    else if (niveau == 51)
                    {
                            max = 1000;
                    }
                    else
                    {
                            printf ("erreur niveau");
                    }
            //  genere un nombre mystere

            nbMystere = genereNombre(min, max);

            do
                {

                        printf ("--------------------\n");
                        printf ("Jeux du plus ou moin\n");
                        printf ("--------------------\n\n");
                        printf ("Quel est le nombre mystere?  ");
                        scanf ("%ld", &nbEntre);
                        system("cls");


            // compare les nombre
            compareNombres(nbEntre, nbMystere);
            printf ("que %ld\n\n", nbEntre);

                }
            while (nbEntre != nbMystere);


                    return 0;
            }
            les fonctions
            #include <time.h>
            //  genere un nombre
            long genereNombre(long min, long max)
                {
                    long nbMystere = 0;

                    srand(time(NULL));
                    nbMystere = (rand() % (max - min + 1)) + min;

                    return nbMystere;
                }
            //    compare le nbentre au nb mystere

            long compareNombres(long nbEntre, long nbMystere)
                {

                    if (nbMystere > nbEntre)
                        printf ("Le nombre mystere est plus grand! ", nbEntre);
                    else if (nbMystere < nbEntre)
                        printf ("Le nombre Mystere est plus petit! ", nbEntre);
                    else
                        printf ("\n\nBravo! vous avez trouve le nombre mystere!\n\n");
                }

            merci! pour ton aide et tes corrections pour le moment mon code marche bien. Mon seul probleme est quand l'utilisateur rentre un nombre qui par la suite est comparé au nombre mystère je veut vérifier la saisie je ne veut pas que l'utilisateur puisse entrer un lettre par exemple. Pour vérifier ca j'utilise la fonction isdigit qui demande une entrer char jusque la tous va bien
            après je dois comparer le nombre entré et le nombre mystère mon probleme est la
            le nombre mystère est un long et mon nombre entré est un char (donc une chaine ASCII)donc imposible a comparer sans convertir la chaine ASCII en nombre réel long ou double. J'ai trouver une fonction qui devrait marcher mais je comprend rien a l'explication du manuel. la fonction est strtod ou strtol pour un long je pense
            • Partager sur Facebook
            • Partager sur Twitter

            strtod - Conversion d'une chaîne ASCII en réel (double)

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown