IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

besoin de conseil pour put_nbr_base


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Points : 16
    Points
    16
    Par défaut besoin de conseil pour put_nbr_base
    Bonjour, étant étudiant en informatique je réalise pour le moment quelques fonctions pour apprendre, mais une me dérange, je ne comprend pas son fonctionnement alors que j'ai réussi sans aucun problème put_nbr. Pour le code qui suit je me suis fais aider mais je n'aime pas passer à autre chose si je n'ai pas tout compris.

    En premier temps : dans le premier while : diviseur = diviseur * t_base. Si on considère que notre chaîne contient 10 caractères et notre nombre par exemple 15, la boucle va se réaliser qu'une fois? Et si le nombre est inférieur a la taille de la chaîne 0 fois ?

    Ensuite dans le 2 ème while : my_putchar(base[result]) tout simplement, pourquoi renvoyer la valeur dans le tableau ?
    J'ai pas du comprendre le but de l'exercice je crois bien ><, voila merci en esperant que des personnes adeptes de cette fonction puisse m'éclairer ou même m'aiguiller si cela est faux.
    Merci.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    int     my_putnbr_base(int nbr, char *base)                                     
    {
      int   diviseur;
      int   result;
      int   t_base;
     
      t_base = my_strlen(base);
      if (nbr < 0)
        {
          my_putchar('-');
          nbr = -(nbr);
        }
      diviseur = 1;
      while ((nbr / diviseur) >= t_base)
        diviseur = diviseur * t_base;
      while (diviseur > 0)
        {
          result = (nbr / diviseur) % t_base;
          my_putchar(base[result]);
          diviseur = diviseur / t_base;
        }
    }

  2. #2
    Membre émérite
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Points : 2 601
    Points
    2 601
    Par défaut
    Bonjour,
    Ton paramètre base, pour ce que je comprends de la fonction, contient les chiffres que tu vas utiliser pour écrire dans une autre base le nombre nbr. Par exemple si base = "0123456789ABCDEF", strlen(base)=16 et tu vas écrire nbr en base 16 de manière classique ; si base ="01" ce sera en binaire classique. Rien ne t’empêche d'utiliser un base="SD" pour une écriture binaire non classique …

    La première boucle va juste déterminer quel est la plus grande puissance de la base qui est nécessaire pour écrire nbr.
    Dans la seconde boucle on utilise le result-ième caractère de la chaîne base pour écrire un chiffre.

    D'une manière plus classique on ne passe pas une chaîne de chiffres mais plutôt la valeur de la base. La chaîne de chiffres étant une locale static const du genre char chiffres[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

  3. #3
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Points : 16
    Points
    16
    Par défaut
    Bonsoir merci de ta réponse ! Ok donc si je comprend bien mon param base va juste me servir à connaître la base de mon param nbr ??

  4. #4
    Membre émérite
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Points : 2 601
    Points
    2 601
    Par défaut
    Citation Envoyé par rubisom Voir le message
    Bonsoir merci de ta réponse ! Ok donc si je comprend bien mon param base va juste me servir à connaître la base de mon param nbr ??
    La base dans laquelle tu vas écrire nbr

  5. #5
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Points : 16
    Points
    16
    Par défaut
    Ok merci !

Discussions similaires

  1. Besoin de conseils pour changer de configuration matériel
    Par lnplnp dans le forum Ordinateurs
    Réponses: 9
    Dernier message: 17/04/2006, 23h27
  2. Besoin de conseils pour une application
    Par peredodu dans le forum Access
    Réponses: 9
    Dernier message: 05/03/2006, 11h18
  3. Réponses: 13
    Dernier message: 13/09/2005, 09h41
  4. Réponses: 4
    Dernier message: 20/05/2005, 13h30
  5. Réponses: 3
    Dernier message: 24/12/2004, 12h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo