Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problemes de variables

Sujet résolu
    27 février 2006 à 0:23:41

    Bonjour,
    je me présente je suis zechs
    je suis un petit nouveau dans la communautée du SiteDuZero puisque je viens de m'inscrire il y a 1 petite heure.
    La principale raison de mon inscription est que j'ai actuellement un problème et que je ne trouve personne capable de m'aider.
    Je vais m'expliquer plus précisément.
    J'utilise déja depuis quelques temps les tutoriaux du SiteDuZero que je trouve vraiment très bien faits, et j'en félicite d'ailleur leur créateur.
    J'ai appris grace a lui le language XHTML ainsi que le CSS.
    J' ai récemment décidé de me mettre au language C dont je suis les tutoriaux.
    Me voici rendu au chapitre sur les variables que j'ai entièrement lu bien entendu, et j'ai décidé de m'exercer comme je le pouvais.
    Seulement voila, il se pose a moi un problème de taille, puisque les variables que je créer refuse catégoriquement de prendre les valeurs que je leurs donne.
    J'ai vérifié plusieurs foi mon code et aucune erreur ne m'apparait.
    Aussi pour que cela soit plus clair pour vous je vais vous afficher mon code puis le resultat obtenu.

    Code:
    #include <stdio.h>
    #include <stdlib.h>

    int main(int argc, char *argv[])
    {
    double jour = 5, mois = 4, annee = 1988, annee_entree = 0;
    printf("bonjour\nje suis nee le 0%ld/0%ld/%ld\net toi quelle est ton annee de naissance ?\n", jour, mois, annee);
    scanf("%ld", &annee_entree);
    printf("vraiment ? en %ld ?\n");

    system("PAUSE");
    return 0;
    }

    Résultat obtenu:
    bonjour
    je suis nee le 00/01075052544/0
    et toi quelle est ton annee de naissance ?
    1988
    vraiment ? en 2293592 ?
    Appuyez sur une touche pour continuer...

    Voila
    J'ai de mon coté cherché à changer le nom des variables, la valeur que je leurs attribuaient, leurs types, et j'ai également cherché du coté des "constantes" mais aucune solution n'est pour l'instant venu a moi et le résultat ne change jamais.

    Quelqu'un pourrait-il me renseigner sur la nature du problème, et meme sur les solutions éxistantes ?

    Merci d'avance à tous.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      27 février 2006 à 0:26:28

      Ton code est tout a fait corecte, je pensse que c'est un problème avec %ld...
      Oui c'est bien sa, ld c'est pour les long, pour les doubles je ne conais pas.. Esseille %d pour voir?
      • Partager sur Facebook
      • Partager sur Twitter
        27 février 2006 à 0:28:15

        Merci beaucoup mais à quoi penses-tu en ce qui concerne les %ld ?
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          27 février 2006 à 0:30:48

          J'ai trouver sa :

          type: précise le type de l'argument

          * pour un entier: d i
          * pour une entier non signé : o u x X (o:affichage en octal, x X:en hexadécimal x X)
          * pour un flottant: f e E g G
          * pour un caractére: c
          * pour une chaîne: s


          Edit : Double.. c'est pas une sorte de "Grand float"? Parce que alors c'est %lf ...
          • Partager sur Facebook
          • Partager sur Twitter
            27 février 2006 à 0:36:39

            Effectivement cela s'arrange un peu
            Je pensais cependant que si l'on mettais %ld cela tronquerai seulement le nombre.
            Me suis-je trompé ?
            malgré la modification des beugs persistent.
            Je continue de travailler la dessus et je reviens donner ce que j'obtiens.

            Me revoila (j'ai utlisée éditer)
            j'ai réctifier les erreurs et cela fonctionne maintenant normalement
            voici le code et le résultat

            code:
            #include <stdio.h>
            #include <stdlib.h>

            int main(int argc, char *argv[])
            {
            long jour = 5, mois = 4, annee = 1988, annee_entree = 0;
            printf("bonjour\nje suis nee le 0%ld/0%ld/%ld\net toi quelle est ton annee de naissance ?\n", jour, mois, annee);
            scanf("%ld", &annee_entree);
            printf("vrement ? en %ld ?\n", annee_entree);

            system("PAUSE");
            return 0;

            résultat:
            bonjour
            je suis nee le 05/04/1988
            et toi quelle est ton annee de naissance ?
            1988
            vraiment ? en 1988 ?
            Appuyez sur une touche pour continuer...

            Merci beaucoup de ton aide
            Je ne pensais pas que le choix du type de variable était aussi important.
            Encore une fois merci.
            Je continue maintenant mon apprentissage.
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              27 février 2006 à 0:54:08

              En fait, les doubles sont coder spécialement : Quelques bits pour la pertie entière, quelques bits pour l'exposant.
              Hor, un %ld considère tout els bits comme une partie entière, ce qui explique se comportement bizare.
              Pour tronquer la virgule, il me semble que c'est %lf.0 ou quelque chsoe dans le genre.

              Sinon, c'est inutile d'utiliser des doubles pour des nombres entier, sa utilise de la mémoire pour rien. Utilise un int, voir un long int si tu veut concerver de gros nombre.
              • Partager sur Facebook
              • Partager sur Twitter

              Problemes de variables

              × 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