Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Programme] Convertisseur 10toX

Convertir un nombre entier en base 10 vers une autre base quelconque

    8 décembre 2005 à 21:07:42

    Bonjour :)

    Je viens ici mettre en ligne le code source et l'éxécutable d'un petit programme que je viens de terminer. Je suis totalement novice en C, je n'ai donc aucune prétention et je sais que ce programme n'a rien de mirobolant (et n'a pas grande utilité à vrai dire), mais je trouve ça tout de même intéressant de publier ses créations pour éventuellement en discuter, et peut-être que d'autres débutants pourront trouver l'étude de ce code source intéressante ;)

    La problèmatique du programme est simple : On a un nombre entier de départ (choisi par l'utilisateur) en base 10. On veut trouver son équivalent en base X (où X est un entier choisi par l'utilisateur).

    Voici l'algorythme que j'ai utilisé pour réaliser la conversion (ce n'est peut-être pas le plus simple, le meilleur, mais il marche ;) ) :


    Nombre = (variable)
    Base = (variable)
    X = 0
    Exposant = 0

    Tant que X <= Nombre faire
    X = Base^Exposant
    Exposant = Exposant + 1
    Fin Tant que

    Exposant = Exposant - 2

    Resultat = 0
    Reste = Nombre
    Multiple = 0
    Decimal = 0

    Tant que Exposant >= 0 faire
    Si Base^Exposant <= Nombre faire
    Multiple = Reste / Base^Exposant
    Reste = Reste - Multiple * Base^Exposant
    Decimal = Multiple * 10^Exposant
    Resultat = Resultat + Decimal
    Fin Si
    Exposant = Exposant - 1
    Fin Tant que


    Et voici le code source en C :


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

    int main(int argc, char *argv[])
    {
      printf ("Bienvenue dans le convertisseur 10toX de Klomac.\n\nCe programme vous permet de convertir n'importe quel nombre entier"
      " en base\ndecimal vers une autre base de votre choix (exemples : binaire, octale,\nhexadecimale etc...).");
     
      char fin = 0,continuer;
     
      while (fin == 0)
      {
          long nombre,base;
          printf ("\n\nQuel nombre decimal souhaitez-vous convertir ? ");
          scanf ("%d",&nombre);
          printf ("\n\nQuelle base souhaitez-vous utiliser pour le resultat ? ");
          scanf ("%d",&base);
          char exposant = 0;
          long x = 0;
          while (x <= nombre)
          {
            x = pow(base,exposant);
            exposant++;
          }
          exposant-=2;
         
          long resultat=0,reste=nombre,y;
          double z;
          while (exposant >= 0)
          {
            if (pow(base,exposant) <= nombre)
            {
              y = reste / pow(base,exposant);
              reste = reste - y*pow(base,exposant);
              z = y*pow(10,exposant);
              resultat = resultat + z;
            }
            exposant--;       
          }
          printf ("\n\nLe nombre %d en base 10 devient %d en base %d",nombre,resultat,base);
          printf ("\n\nVoulez-vous convertir un autre nombre ? [ 1 : oui ; 0 : non ] ");
          scanf ("%d",&continuer);
          printf ("\n\n");
          if (continuer == 1) { fin = 0; }
          else { fin = 1; }
      }
      return 0;
      system("PAUSE");     
      return 0;
    }


    Et enfin un lien pour télécharger l'éxécutable : http://klomac.fandecabrel.com/divers/10toX.exe

    Voilà voilà, il y a surement des améliorations à apporter à ce programme mais pour un premier essai en C je suis plutôt satisfait. Si vous avez des remarques, n'hésitez pas ;) Me reste plus qu'à cogiter sur le prochain programme que je pourrais faire... si quelqu'un a une idée ;)

    Bonne continuation :)
    • Partager sur Facebook
    • Partager sur Twitter
      8 décembre 2005 à 22:06:31

      Ton prog marche jusqu'à la base 10. Apres, on utilise les lettres. Puisque me dire que 10 est 10 en bse 16 :D.
      Sinon bon debut.
      • Partager sur Facebook
      • Partager sur Twitter
        8 décembre 2005 à 22:39:21

        Et en base 42, on fait comment après les lettres ?
        Sérieux, y'en a pas 36 des bases utilisées, et elles n'ont pas besoin de conversion, c'est le programmeur qui choisis de les afficher comme il le souhaite.
        • Partager sur Facebook
        • Partager sur Twitter
          9 décembre 2005 à 6:59:14

          Ah oui zut j'ai pas pensé aux lettres, merci ;) Donc je vais revoir un peu ça, mais effectivement ça limite le nombre de bases (disons base 36 ?). Après c'est vrai qu'on a pas besoin de ce programme, je l'ai juste fait pour le plaisir de faire un algorythme et de le programmer ;) Je vous tiens au courant si j'arrive à faire les 26 bases supplémentaires :p
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            9 décembre 2005 à 12:00:36

            Dans la catégorie 'suggestion' :
            " printf ("Bienvenue dans le convertisseur 10toX de Klomac.\n\nCe programme vous permet de convertir n'importe quel nombre entier"
            " en base\ndecimal vers une autre base de votre choix (exemples : binaire, octale,\nhexadecimale etc...).");"
            Evite de semer des \n par-ci par-là... C'est à la console d'aller à la ligne, suivant le nombre de colonne dispo, pas au programmeur de prévoir ces cas-là. ;)
            • Partager sur Facebook
            • Partager sur Twitter
              9 décembre 2005 à 13:06:31

              C'est vrai, mais est-ce possible de dire à la console de revenir à la ligne quand le mot est trop long ? Parce que sinon ça coupe les mots et c'est pas très esthétique.
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                9 décembre 2005 à 14:55:10

                Citation : Klomac

                C'est vrai, mais est-ce possible de dire à la console de revenir à la ligne quand le mot est trop long ? Parce que sinon ça coupe les mots et c'est pas très esthétique.

                Non, pas possible. Normalement, ta console devrait être assez intelligente pour faire ça elle-même, sans qu'on ait à le lui dire...
                C'est à croire que ta console elle mal foutue, tu penses pas?
                • Partager sur Facebook
                • Partager sur Twitter

                [Programme] Convertisseur 10toX

                × 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