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 :

Remplissage automatique de tableau à taille variable


Sujet :

C

  1. #1
    Membre éclairé
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Par défaut Remplissage automatique de tableau à taille variable
    Bonjour à tout le forum !

    Débutante en C, je m'entraîne avec ddivers exercices.
    Mon exercice du jour consiste en la programmation d'un convertisseur décimal > binaire.

    Voici les étapes de mon code:
    - l'utilisateur saisi un nombre entier positif en base 10 ;
    - le programme effectue des divisions successives par 2 jusqu'à ce que le quotient vale zéro ;
    - à chaque passage dans la boucle (ci-dessus), le reste trouvé est placé dans un tableau ;
    - à la fin de la boucle, grâce à une fonction j'inverse l'ordre de mon tableau ;
    - j'affiche le tableau (donc le résultat en binaire).

    Mon problème se pose au niveau du placement du reste dans un tableau : il ne veut pas de mon incrémentation !

    Voici mon bout de code :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    int main()
    {
        int nbSaisi=0, quotient1=0, quotient2=0, resultat=0, reste=0, i=0, compteur=0, j=0;
        int tab[300]={0};
     
        printf("Saisir un nombre entier positif en base 10: ");
        scanf("%d", &nbSaisi);
     
        quotient1 = nbSaisi;
        quotient2=quotient1;
     
        while (quotient2!=0)
        {
            quotient2 = quotient1/2;
            reste = quotient1%2;
            printf("%d", reste);
            quotient1 = quotient2;
            tab[i] = reste;
            compteur=i++;
        }
     
    printf("\n\nLe tableau contient %d valeurs.\n", compteur);
     
        inverseTableau(tab, compteur); //inutile d'afficher ma fonction, elle (au moins) elle fonctionne !
     
        printf("\nResultat en binaire: \n\n");
     
        for (i=0; i<compteur; i++)
        {
            printf("%d", tab[i]);
        }
     
        printf("\n\n");
     
        return 0;
    }
    Visiblement c'est ma ligne compteur=i++ qui ne passe pas; ça ne me compte pas la dernière valeur, quel que soit son nombre.
    Par exemple, 12(base 10) donne 1100(base 2) ; sachant qu'en premier lieur c'est à l'envers (0011), ça ne me compte que les 3 premières valeurs et du coup, ça m'affiche 100.

    S.O.S !

    Merci d'avance pour votre aide !

    Kaera*

  2. #2
    Membre chevronné Avatar de hariman
    Homme Profil pro
    Développeur Java, Android
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations professionnelles :
    Activité : Développeur Java, Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Par défaut
    Bonjour,

    Lors de la première exécution de la boucle, tu l'as affecté à 0 au lieu de 1

  3. #3
    Membre éclairé
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Par défaut
    Citation Envoyé par hariman Voir le message
    Bonjour,

    Lors de la première exécution de la boucle, tu l'as affecté à 0 au lieu de 1
    Salut hariman,

    Pourquoi dois-je l'initialiser à 1 sachant qu'il prendra la valeur de i incrémentée?
    (j'ai quand même fait la modification pour voir, pas de changement )


    Merci d'avance.

    Kaera*

  4. #4
    Membre chevronné Avatar de hariman
    Homme Profil pro
    Développeur Java, Android
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations professionnelles :
    Activité : Développeur Java, Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Par défaut
    Attention ! A ne pas confondre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    compteur = i++; // la valeur de i est affecté à compteur puis i est incrémenté
    //mais
    compteur = ++i; // i est incrémenté avant que la valeur de i soit affecté à compteur
    Essaye d'afficher le contenu de compteur pour le vérifier.

    Une autre solution :
    Pourquoi pas ?

  5. #5
    Membre éclairé
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Par défaut
    Ok, j'ai compris !

    C'est bon à savoir ! Le genre de choses que mon cher professeur passe totalement la trappe...

    Merci pour tes explications hariman.

    Kaera*

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. C - Tableau à taille variable
    Par LittleT dans le forum C
    Réponses: 4
    Dernier message: 31/03/2012, 21h59
  2. [XL-2007] Seléctionner les 3 dernières colonnes d'un tableau à taille variable
    Par ron13 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 31/08/2011, 05h14
  3. tableau taille variable
    Par piero53 dans le forum VB.NET
    Réponses: 14
    Dernier message: 13/07/2011, 02h08
  4. [XL-2002] Sélection automatique d'un tableau de taille variable
    Par Melhiril dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 14/04/2010, 10h10
  5. Comment obtenir un tableau à taille variable ?
    Par marsupilami34 dans le forum Langage
    Réponses: 6
    Dernier message: 27/06/2005, 15h03

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