Rentrer des valeurs dans un tableau
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

Rentrer des valeurs dans un tableau



  1. #1
    invitee8f75e57

    Rentrer des valeurs dans un tableau


    ------

    Bonjour,

    Je vous explique le programme que je fais : Au départ mon tableau contient des valeurs nulles. Lorsque j'entre une valeur sur le pavé numérique (entre 0 et 9), à l'aide de la fonction getchar la valeur que j'ai rentré apparait sur le terminal. Lorsque j'entre une autre valeur, la valeur précédente est décalée d'un pas de 1 vers la gauche, laissant la case précédente vide pour que la valeur nouvellement entrée apparaisse aussi. Au final, jobtiens à l'écran mon tableau avec toutes les valeurs que j'ai rentré.

    Exemple :
    Au départ j'ai mon tableau suivant : {0, 0, 0, 0, 0}

    J'entre le nombre 2 j'obtiens : {0, 0, 0, 0, 2}

    j'entre le nombre 9 j'obtiens : {0, 0, 0, 9, 2}

    J'entre le nombre 4 j'obtiens : {0, 0, 4, 9, 2}

    Ainsi de suite, voila le programme que j'ai fais :

    Code:
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    #define TAILLE 10
    
    int tab[TAILLE] = {0};
    
    
    //La fonction suivante remplit un tableau au fur et à mesure qu'on entre un nombre entre 0 et 9
    //On entre un chiffre compris entre 0 et 9
    //ce chiffre est stocké dans un tableau de taille et à l'indice 0
    //Lorsqu'on entre le chiffre suivant, tous les chiffres précédents sont décalés
    //Ce qui veut dire que le chiffre qu'on a entré entre en indice 0
    
    void remplir_tableau (int i)
    {
     int j = i;
     int p = getchar();
     if (j<TAILLE)
       {
          tab[j+1] = tab[j];
          tab[j] = tab[j-1];
         j++;}
       tab[i] = p;
        printf ("%2d", tab[i]);
       if (i<TAILLE)
        remplir_tableau (i++);
    }
    
    
    int main ()
    {
     remplir_tableau(1);
     return 0;
    }

    Sue le terminal, quand j'entre un nombre il apparait à l'écran, mais les 0 initiaux n'apparaissent pas, ainsi que le tableau de 10 que j'ai déclaré.
    En effet, j'obtiens ceci :

    J'entre le nombre 5 : 5
    J'entre le nombre 5 : 53105
    J'entre le nombre 2 : 53102

    Or que je devrais avoir ceci :

    J'entre le nombre 5 : {0,0,0,0,0,0,0,0,0,5}
    J'entre le nombre 5 : {0,0,0,0,0,0,0,0,5,5}
    J'entre le nombre 2 : {0,0,0,0,0,0,0,2,5,5}

    Vous avez des idées ?

    Merci

    -----
    Dernière modification par JPL ; 16/07/2012 à 00h58. Motif: Ajout de la balise Code pour garder l'indentation

  2. #2
    Bruno

    Re : Rentrer des valeurs dans un tableau

    Salut,

    Déjà pour l'affichage tu n'affiches qu'un seul élément de tab, pour tout afficher il faut une boucle. Pour le reste, lance le debugger et observe pas à pas le contenu de tab, tu verras où se situe le problème.

  3. #3
    invite2d7144a7

    Re : Rentrer des valeurs dans un tableau

    Bonjour,

    +1

    OU, retour aux bases : papier + crayon.

    Tu dessines quelques cases représentant ton tableau, et tu fais manuellement ce que ton programme aura à faire, en notant l'évolution des valeurs des variables, et dans ton cas, enparticulier des indices d'accès au tableau.

    Là, on a l'impression que c'est codé plus ou moins au pif, genre "tiens, si j'essayais ça ?".

    En plus, se taper une fonction récursive pour une tâche aussi élémentaire est une très mauvaise idée.

  4. #4
    invitee8f75e57

    Re : Rentrer des valeurs dans un tableau

    J'ai tout repris,
    Maintenant j'arrive à faire le décalage de mes 0. Quand j'entre l'entier que je sélectionne sur le pavé numérique du pc, au lieu de me le mettre au début du tableau il m'affiche des nombres assez bizarres.
    Mon programme :

    Code:
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    #define TAILLE 10
    
    
    //La fonction suivante remplit un tableau au fur et à mesure qu'on entre un nombre entre 0 et 9
    //On entre un chiffre compris entre 0 et 9
    //ce chiffre est stocké dans un tableau de taille et à l'indice 0
    //Lorsqu'on entre le chiffre suivant, tous les chiffres précédents sont décalés
    //Ce qui veut dire que le chiffre qu'on a entré entre en indice 0
    
    void remplir_tableau ()
    {
     int tab[TAILLE];
     int i = 0;
     for (i=0; i<TAILLE; i++)
       tab[i] = 0;
    
     int j;
     for (j=0; j<TAILLE; j++)
       printf ("%2d", tab[j]);//notre tableau de 0 est affiché à l'écran
    
     int p = getchar();
     int k;
     for (k=1; k<TAILLE; k++)
       {
        tab[k+1] = tab[k];
        tab[k] = tab[k-1];
        tab[0] = p;
        printf("%2d %2d", tab[k], tab[0]);
       }
    }
    
    
    int main ()
    {
     remplir_tableau();
     return 0;
    }

    Au départ j'ai : {0,0,0,0,0,0,0,0,0,0}
    J'entre le chiffre 8 j'obtiens : {0, 56, 0, 56 ...}

    Aussi, quand je fais seulement printf ("%2d", tab[k]); j'obtiens bien mes 0 décalés avec la première case vide
    Dernière modification par JPL ; 16/07/2012 à 00h59. Motif: Ajout de la balise Code pour garder l'indentation

  5. A voir en vidéo sur Futura
  6. #5
    invitee8f75e57

    Re : Rentrer des valeurs dans un tableau

    Je pense que le problème vient de mon getchar, ce que je trouve bizarre parce-que je veux entrer un entier depuis le clavier et la fonction qui permet de la faire est getchar

  7. #6
    invitee8f75e57

    Re : Rentrer des valeurs dans un tableau

    vous savez ce qui ne vas pas dans mon code et comment y faire ?

  8. #7
    Bruno

    Re : Rentrer des valeurs dans un tableau

    C'est normal qu'il affiche 56 quand tu rentres 8 puisque tu lui dit d'afficher qqch dont le type est décimal (%2d): http://www.asciitable.com/

    Pour afficher un caractère c'est %c: http://www.cplusplus.com/reference/c...cstdio/printf/

  9. #8
    Paraboloide_Hyperbolique

    Re : Rentrer des valeurs dans un tableau

    Bonjour,

    Oui, le problème vient du "getchar". Cette fonction retourne un caractère "8" que vous convertissez implicitement en un entier. En code ascii, l'entier "56" correspond au caractère "8", ce que vous obtenez. Pour régler le problème je vous conseille de remplacer le "getchar" par: scanf("%d", p), qui permettra d'entrer directement un entier.

    Si vous vous posez des questions quant-à l'utilisation d'une fonction (ou si une fonction existe), je vous conseille de visiter le site suivant, qui est très complet, bien fait et didactique: http://www.cplusplus.com/reference/

  10. #9
    invitee8f75e57

    Re : Rentrer des valeurs dans un tableau

    @Paraboloide_Hyperbolique : J'ai utilisé %c pour le getchar j'obtiens bien le chiffre que j'ai rentré merci
    @Bruno : Merci pour ta réponse j'obtiens bien le chiffre que je rentre à l'écran, maintenant j'obtiens lorsque j'entre par exemple le nombre 7 :{0, 7, 0, 7, 0...}, ce qui n'est pas exactement ce que je vaux car je veux {0, ...,0,7}

  11. #10
    invite2d7144a7

    Re : Rentrer des valeurs dans un tableau

    Bonjour,

    On te l'a déjà précisé : avant de coder, mets bien ton algorithme au point, et pour un programme simple comme le tien, ça passe par une étude avec papier + crayon.

    D'autre part, ta fonction remplir_tableau telle qu'elle est, ne sert strictement à rien, sinon déporter une partie du code hors de main :
    elle travaille uniquement à son propre profit, et ne renvoie rien.

    Autant ne pas la mettre.

    Attention : je ne dis pas qu'il ne faut pas décomposer le programme en fonctions, mais que tel que tu l'écris, ça ne sert à rien.

  12. #11
    invitee8f75e57

    Re : Rentrer des valeurs dans un tableau

    C'est bon j'arrive à faire mon décalage merci pour vos réponses

Discussions similaires

  1. [Biologie Moléculaire] Tableau au valeurs non identifiables
    Par invitea8b8e1ae dans le forum Biologie
    Réponses: 2
    Dernier message: 30/05/2010, 18h27
  2. Comment exporter des valeurs dans un tableau à Excel
    Par inviteb1dc4efc dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 05/12/2008, 22h35
  3. Rentrer dans une des 15 meilleurs prépas Scientifiques ?
    Par invitebf675b7a dans le forum Orientation après le BAC
    Réponses: 16
    Dernier message: 26/09/2006, 22h30
  4. Tableau des signes valeurs absolus
    Par inviteeb223594 dans le forum Mathématiques du collège et du lycée
    Réponses: 2
    Dernier message: 14/05/2006, 11h03
  5. rentrer des formules dans une TI-82 stats
    Par invitede6f3928 dans le forum Dépannage
    Réponses: 1
    Dernier message: 06/04/2006, 12h07