Partage
  • Partager sur Facebook
  • Partager sur Twitter

[EXERCICE 3] sur le chapitre des tableaux

problème lors de l'affichage

Sujet résolu
    21 décembre 2006 à 20:46:15

    Coucou tout le monde :)

    Comme l'indique mon titre, j'ai un souci sur l'exercice 3 du chapitre sur les tableaux:
    Mon printf(); ne veut pas compiler et je ne sais pas pourquoi !

    Voici mon code:


    #include <stdio.h>
    #include <stdlib.h>
    void copie(long *tableauOriginal‚ long *tableauCopie‚ long tailleTableau);

    int main(int argc‚ char *argv[])
    {
           

      long tableau[4] = {10153};
      long tableau2[4] = {202530};

    // On affiche le contenu des tableaux avant
      printf("Tableau 1: %Id \n Tableau 2: %Id\n"‚ tableau[0]‚ tableau2[0]);
    // On affiche le contenu des tableaux avec la fonction ( ca plante ici )
      printf("%Id"‚ copie(tableau‚ tableau2‚ 4));
      printf("\n\n"); // vous fiez pas à ca :p‚ c'est pour faire plus zoli
     
      system("PAUSE");     
      return 0;
    }
        void copie(long *tableauOriginal‚ long *tableauCopie‚ long tailleTableau)
        {
             long i = 0‚ a = 0;
             

             for( i = 0; i < tailleTableau ; i++)
             {
              tableauOriginal[i] = tableauCopie[i]// je met tableau copie dans tableau original
             } 
             //printf("%Id \n %Id"‚ tableauOriginal‚ tableauCopie); j'ai mis ceci en commentaire car je  suis pas sur de si je dois le mettre !
        }



    voila ^^

    a bientot !
    • Partager sur Facebook
    • Partager sur Twitter
      21 décembre 2006 à 20:54:59

      /* remram44 : ajout d'une indentation décente */
      #include <stdio.h>
      #include <stdlib.h>

      /* remram44 : utilise int et non long ! Utilise const pour indiquer que tu ne
       * modifie pas l'original. */

      void copie(const int *tableauOriginal‚ int *tableauCopie‚ size_t tailleTableau);

      /* remram44 : paramètres inutiles ici... */
      int main(void)
      {
          /* remram44 : pourquoi déclarer des tableaux de 4 éléments et n'en
           * initialiser que 3 ? un compilateur décent devrait afficher un warning...
           */

          int tableau[4] = {1015342};
          int tableau2[4] = {20253033};
         
          /* On affiche le contenu des tableaux avant */
          /* remram44 : euh... tu n'affiches que la première case là... */
          printf("Tableau 1: %d \n Tableau 2: %d\n"‚ tableau[0]‚ tableau2[0]);
         
          /* On affiche le contenu des tableaux avec la fonction ( ca plante ici ) */
          /* remram44 : euh‚ copie ne retourne rien du tout hein... */
          copie(tableau‚ tableau2‚ 4);
          printf("%d\n"‚ tableau2[0]);
         
          getchar();
         
          return 0;
      }

      void copie(const int *tableauOriginal‚ int *tableauCopie‚ size_t tailleTableau)
      {
          size_t i;
          /* remram44 : tu n'utilises pas a ! */
         
          for(i = 0; i < tailleTableau ; i++)
          {
              tableauCopie[i] = tableauOriginal[i];
              /* je met tableau copie dans tableau original */
              /* remram44 : original : masculin (féminin : originale)
               *  Qui n’a pas été fait d’après un modèle et qui sert de modèle pour
               *  des copies ou des imitations.
               * http://fr.wiktionary.org/wiki/original#Adjectif */

          }
      }
      • Partager sur Facebook
      • Partager sur Twitter
        21 décembre 2006 à 20:58:43

        Tu a mis dans tes printf %Id au lieu de %ld.
        De plus tu met :
        printf("%Id"‚ copie(tableau‚ tableau2‚ 4));
        or, ta fonction copie renvoie un void (en gros rien du tout) tu ne peut donc rien afficher avec cette ligne de code.

        Si tu veut afficher le contenu d'un de tes tableau tu peut utiliser ce code:
        long i;
        for(i=0;i<4;i++)
        {
           printf("%ld"‚tableau[i]);
        }
        • Partager sur Facebook
        • Partager sur Twitter
          21 décembre 2006 à 21:01:31

          Citation : bad_woker

          ta fonction copie renvoie un void (en gros rien du tout)


          Pas en gros, elle ne renvoit réellement rien du tout...
          • Partager sur Facebook
          • Partager sur Twitter
            21 décembre 2006 à 21:15:24

            merci de ces réponses !

            Citation : bad_woker


            Si tu veut afficher le contenu d'un de tes tableau tu peut utiliser ce code:

            long i;
            for(i=0;i<4;i++)
            {
               printf("%ld"‚tableau[i]);
            }


            si je peux utiliser ceci c'est parce que mon pointeur a modifié en mémoire la valeur de tableau ?
            mais avec ca je n'appelle pas du tout la fonction donc elle ne fait rien et la variable "i" n'existe normalement pas vu qu'on est en dehors de la fonction ?!

            Merci !

            [EDIT] j'ai compris mon erreure !
            merci
            • Partager sur Facebook
            • Partager sur Twitter

            [EXERCICE 3] sur le chapitre des tableaux

            × 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