Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C] création d'un programme de conversion décimal/binaire

problèmes multiples malheuresement :euh:

    21 mai 2006 à 12:55:11

    Bonjour a tous,
    tout d'abord merci beaucoup pour ce site génial il m'a vraiment beaucoup aidé pour l'instant :D
    Donc voila je vous explique ma situation:
    Je doit réaliser un programme de conversion décimal/binaire dans le cadre d'un ppe mais maheuresement j'ai très peu de temps ( d'ici demain soir ça doit etre fini >_<>_<>_< )pour l'instant j'essaie de faire marcher le programme sous console et si tout marche bien seulement j'essaierai de faire une interface graphique grace a la SDL (mais bon je n'y croit pas vraiment :-° ).
    Bon alors j'ai commencé a faire 2-3 algorithmes de conversion décimal/binaire mais j'ai un niveau très faible en c pour l'instant ( je suis en train d'apprendre) et mon code n'est pas "propre" je m'en rend compte et j'en suis désolé pour sa lecture :( .



    Mon environnement de programmation



    • Mon langage : le c
    • Mon système d'exploitation : windows xp :euh:
    • Mon IDE : code blocks


    Mon programme



    Ce qu'il doit faire



    Dans un premier temps le programme doit demander un nombre a l'utilisateur, le convertir en un nombre binaire et afficher le nombre converti.

    L'implémentation que j'ai choisie



    Euh la par contre je ne sais pas quoi mettre :-°

    Mon bug



    Message d'erreur : Alors la ils sont bien nombreux >_< le premier est un problème de définition du tableau...

    Mon code


    main.c:

    #include <stdio.h>
    #include <stdlib.h>
    #include "decibin.h"
    #define TAILLE 1000

        long convertdecbin(long nbdeci);

    int main()
    {
        long nbbin[TAILLE] = {0};

        long nbdeci = 7, j=1;

    convertdecbin(long nbdeci);
    while (nbbin[TAILLE-j]!=1)
    {
        j++;
    }
    while (j!=(TAILLE+1))
    {
        printf ("%ld",nbbin[TAILLE-j];
        j++;
    }

            return 0;
    }



    decibin.h



    long convertdecbin (long nbdeci)
    {

        long i=0;
        for(i=0; nbdeci!=0; i++)
        {
            nbbin[i]= nbdeci %2;
            nbdeci /=2;
        }
    }





    Merci par avance de votre aide
    • Partager sur Facebook
    • Partager sur Twitter
      21 mai 2006 à 13:00:13

      c'est ton appel de la fonction qui est pas correcte mais plutot
      #include <stdio.h>
      #include <stdlib.h>
      #include "decibin.h"
      #define TAILLE 1000

          long convertdecbin(long nbdeci);

      int main()
      {
          long nbbin[TAILLE] = {0};

          long nbdeci = 7, j=1;

      convertdecbin(nbdeci);
      while (nbbin[TAILLE-j]!=1)
      {
          j++;
      }
      while (j!=(TAILLE+1))
      {
          printf ("%ld",nbbin[TAILLE-j];
          j++;
      }

              return 0;
      }


      Normalement y a pas d'érreur enfin j'ai pas lu plus loin :) si j'en trouve j'edit le post
      • Partager sur Facebook
      • Partager sur Twitter
        21 mai 2006 à 13:37:53

        merci pour ta réponse, j'ai bien enlevé le long dans l'appel de la fonction mais toujours la même erreur pour l'instant en fait il surligne dans le fichier decibin.h
        nbbin[i]= nbdeci %2;

        et il me dit 'nbbin' undeclared.
        Sinon j'ai pas préciser mais on est 2 en fait sur le projet ;)
        • Partager sur Facebook
        • Partager sur Twitter
          21 mai 2006 à 13:50:03

          Citation : flam

          Bon alors j'ai commencé a faire 2-3 algorithmes de conversion décimal/binaire mais j'ai un niveau très faible en c pour l'instant ( je suis en train d'apprendre) et mon code n'est pas "propre" je m'en rend compte et j'en suis désolé pour sa lecture :( .

          Ce qu'il doit faire



          Dans un premier temps le programme doit demander un nombre a l'utilisateur, le convertir en un nombre binaire et afficher le nombre converti.


          Déjà, tu devrais relire le cours de M@teo sur la programmation modulaire. Il n'a jamais été question de mettre des fonctions dans un .h.

          Tu peux aussi lire ceci

          http://mapage.noos.fr/emdel/codage.htm#organiser_source
          http://mapage.noos.fr/emdel/codage.htm#organiser


          Concernant ton code. Tu dois bien être conscient de ceci :
          • D'une part, on a la représentation interne des valeurs. Celle-ci est binaire. Il n'y a donc rien à convertir.
          • D'autre part, la représentation textuelle des valeurs. Celle-ci peut être représentée de manière décimale, octale, binaire etc.

          Pour convertir une valeur numérique en sa représentation textuelle binaire, il faut créer une chaine de caractères composée des chiffres 0 et 1 représentant chaque bit de la valeur numérique.

          Par exemple, si une variable de type int a pour valeur 128 (en hexa, 80), son codage binaire est 0000 0000 1000 0000 (le nombre de 0 en tête peut varier d'une implémentation à l'autre).

          On peut choisir de l'afficher comme ceci : "10000000" (c'est à dire en ignorant les 0 en tête). Pour ça, on va créer une fonction qui va remplir un tableau de char avec les caractères '0' ou '1' selon les bits lus dans l'int. Evidemment, pour en faire une chaine valide, on terminera la chaine par un 0.

          Pour lire les bits d'un int, on utilise les opérateurs bits (bitwise operators) que sont &, |, ~, ^, << et >> (AND, OR, NOT, XOR, SHL, SHR).

          Les détails sont dans ton livre de C.
          • Partager sur Facebook
          • Partager sur Twitter
          Music only !
            21 mai 2006 à 17:15:21

            salut -ed- merci pour ton aide ;)
            désolé pour les .h je n'ai pas eu le temps de lire tous les cours de Mateo (pourtant il sont vraiment bien fait ;) )et je n'ai pas de livre sur le c non plus.

            bon alors voila le code que je viens de faire et qui marche pour l'instant:
            conversion décimal/binaire:

            #include <stdio.h>
            #include <stdlib.h>
            #define TAILLE 1000

              long nbbin[TAILLE] = {0};

            long convertdecbin (long nbdeci);
            int main()
            {


                long nbdeci = 0;
                long j=1;

                printf("Veuillez entrer un nombre decimal entier a convertir.\n");
                scanf("%ld", &nbdeci);
            if (nbdeci == 0 || nbdeci >= 2147483648)
            {
              printf ("Nombre = 0, trop grand ou negatif.");
            }
            else
            {
                convertdecbin(nbdeci);
                printf ("Voici la valeur de votre nombre decimal %ld en binaire:\n",nbdeci);

            while (nbbin[TAILLE-j]!=1)
            {
                j++;
            }
            while (j!=(TAILLE+1))
            {
                printf ("%ld",nbbin[TAILLE-j]);
                j++;
            }
            }
                printf ("\n\n");
                system("PAUSE");

                    return 0;


            }

            long convertdecbin (long nbdeci)
            {

                long i=0;
                for(i=0; nbdeci!=0; i++)
                {
                    nbbin[i]= nbdeci %2;
                    nbdeci /=2;
                }
            }


            et dans ma lancer j'ai fait un algo de conversion binaire=>décimal:

            #include        <stdio.h>
            #include        <stdlib.h>
            #include         <math.h>

            int main()
            {
               long nbbin = 0, k=0, nbdeci=0;

                printf("Veuillez entrer le nombre binaire a convertir.\n");
                scanf("%ld", &nbbin);
            while (nbbin!=0)
            {
            nbdeci += (nbbin%2)*pow(2, k); //mega calcul :p
            if ((nbbin%2)==1)
            {
                nbbin--;
            }
            nbbin /= 10;
            k++;
            }
                printf ("Voici la valeur de votre nombre binaire en decimal:%ld \n",nbdeci);
                   printf ("\n\n");
                system("PAUSE");
            return 0;
            }


            bon maintenant je vais les réunir en un seul avant d'essayer de fair une interface graphique :p
            • Partager sur Facebook
            • Partager sur Twitter
              21 mai 2006 à 17:53:05

              C'est ton jour de chance, mon coco ! :p Je viens juste de finir un petit programme similaire en windowsAPI (donc avec une belle interface graphique ;) )

              Si tu veux le voir, va là :
              www.esnips.com\web\kidpaddle2sBusinessFiles
              -> C'est le "MPIs_simpleProgram"

              Donc bin la partie qui t'intéresse se trouve dans une boîte de dialogue. ^^ Tu auras juste à prendre la partie de celle-ci (oublie pas les ressources correspondantes) et l'intégrer dans un projet à toi ! :D

              Si tu comprends pas le windowsAPI, prends juste l'algo... ^^
              Et si vraiment tu comprends pas quelque chose, j'irais jeter un coup d'oeil sur ce topic ;)

              Tchuss :)
              • Partager sur Facebook
              • Partager sur Twitter
                21 mai 2006 à 18:39:26

                Citation : flam

                salut -ed- merci pour ton aide ;)
                désolé pour les .h je n'ai pas eu le temps de lire tous les cours de Mateo (pourtant il sont vraiment bien fait ;) )et je n'ai pas de livre sur le c non plus.


                Alors là, je dis STOP!

                Image utilisateur
                • Partager sur Facebook
                • Partager sur Twitter
                Music only !
                  21 mai 2006 à 19:03:08

                  -ed- a (comme toujours ;) )tout à fait raison ... tu devrais faire attention à ce que tu fais ... surtout avec des erreurs aussi basiques. :)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    22 mai 2006 à 21:05:36

                    Outil dangereux? Je comprends pas trop ^^ Sinon je ne penses pas que son but soit de "maitriser" le langage C mais bien d'apprendre !
                    • Partager sur Facebook
                    • Partager sur Twitter
                      22 mai 2006 à 21:14:00

                      re bonjour a tous,
                      bon j'ai un programme de conversion qui marche a peu près maintenant :D meme si il reste quelques correction a apporter et que le code est très moche :-°
                      kidpaddle2> merci beaucoup pour ton aide j'ai regardé les source de ton programme il a l'air super bien fait et il est beau (bien mieux que notre console :-° ) mais malheuresement ce n'est pas de mon niveau et j'ai vraiment du mal a conprendre certaines choses.

                      En fait je recherche actuellement un moyen d'afficher notre programme dans une fenêtre sdl en fait donc afficher du texte (ça j'arrive a me débrouiller) mais c'est pour demander un nombre a l'utilisateur et pour afficher la variable de sortie que je ne vois pas comment faire :euh:
                      merci de votre aide
                      • Partager sur Facebook
                      • Partager sur Twitter
                        22 mai 2006 à 21:33:17

                        Pour afficher du texte (en l'occurence, des nombres) en SDL, tu dois utiliser SDL_ttf. M@teo vient de faire un chapitre là-dessus.


                        Après, il faut aussi gérer la saisie du nombre.. mais ce n'est pas très difficile.. avec quelques "sprintf" et une bonne gestion des evenements, c'est faisable. (je l'ai déja fait :p )
                        • Partager sur Facebook
                        • Partager sur Twitter
                          22 mai 2006 à 22:21:01

                          Citation : Pwnstar

                          Outil dangereux? Je comprends pas trop ^^ Sinon je ne penses pas que son but soit de "maitriser" le langage C mais bien d'apprendre !


                          Utiliser le C sans le maitriser, c'est comme découper le roti avec un ken...
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Music only !
                            23 mai 2006 à 17:52:21

                            google est mon ami
                            Image utilisateur
                            et pour la blague :p
                            Image utilisateur
                            bonjour le massacre !!!
                            • Partager sur Facebook
                            • Partager sur Twitter

                            [C] création d'un programme de conversion décimal/binaire

                            × 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