Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exo du tableau...

Approuved ?

    1 mai 2006 à 15:51:17

    Hop là... Apres le plus ou le moins, je suis -enfin- parvenu à finir les exos du tableau. :D

    Tout marche, mais je les poste que vous me corrigiez quand même, et que vous trouviez des erreurs invisibles pour le commun des mortels... :p

    Nota : Pour l'exo 5 j'ai un peu copité - il me manquait l'idée d'introduire un second for - mais j'ai comprité aussi. :D


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


    /* Créer une fonction sommeTableau qui renvoie la somme des valeurs contenues dans le tableau*/
    /* Fait ! Avec aide... (Pour variable somme...)*/

    /* Créer une fonction moyenneTableau  qui calcule et renvoie la moyenne des valeurs.*/
    /* Fait ! Et la prochaine j'eviterais d'oublier que c'est "lf" et pas "ld" ...*/

    /* Créer une fonction copierTableau qui prend en paramètre 2 tableaux. Le contenu du premier tableau devra être copié dans le second tableau.*/
    /* Fait ! Et la prochaine fois je placerais mes appel de fonctions au bon endroit...*/

    /* Créer une fonction maximumTableau qui aura pour rôle de remettre à 0 toutes les cases du tableau ayant une valeur supérieure à un maximum. Cette fonction prendra en paramètre le tableau ainsi que le nombre maximum autorisé (valeurMax). Toutes les cases qui contiennent un nombre supérieur à valeurMax doivent être mises à 0.*/
    /* Fait ! Pris du temps tout ca pasque j'ai confondu un "n" et un "m"... C'est à vous degouter...*/

    /* Créer une fonction ordonnerTableau qui classe les valeurs d'un tableau dans l'ordre croissant. Ainsi, un tableau qui vaut {15, 81, 22, 13} doit à la fin de la fonction valoir {13, 15, 22, 81}*/
    /* A moitié fait ! En fait j'ai copié... Mais j'ai compris aussi xD*/

    //prototype...
    long sommeTableau(long tableau[], long tailleTableau);
    double moyenneTableau(long tableau[], long tailleTableau);
    void copie(long tableauOriginal[], long tableauCopie[], long tailleTableau);
    void parcourir(long tableauOriginal[], long tableauCopie[], long tailleTableau);
    void affiche(long *tableau, long tailleTableau);
    void maximunTableau(long tableau[], long tailleTableau, long valeurMax);
    void ordonnerTableau(long tableau[], long tailleTableau);


    //fonction main...
    int main(int argc, char *argv[])
    {

        long tableau[8] = {85, 127, 74, 558, 1, 52, 64, 222}, i = 0;
        long tableauCopie[8] = {0};
        long valeurMax = 0;
       
       
        //appel de la fonction Max...
        maximunTableau(tableau, 8, 200)


        //sommes et moyenne du tableau...
        printf("\n\n La somme est de %ld, et la moyenne est de %lf \n\n", sommeTableau(tableau, 8), moyenneTableau(tableau, 8));
       
        //appel de la fonction void copie...
        copie(tableau, tableauCopie, 8);
       
        //appel de la fonction void parcourir pour verifier les valeurs...
        parcourir(tableau, tableauCopie, 8);
       
        printf("\n\n On reprend les memes et on recommence ! Mais dans l'ordre cette fois... \n\n\n");
       
        //appel de la fonction ordonner - beurk -...
        ordonnerTableau(tableau, 8);
       
        //appel de la fonction void copie...
        copie(tableau, tableauCopie, 8);
       
        //appel de la fonction void parcourir pour verifier si c'est ordonné...
        parcourir(tableau, tableauCopie, 8);

       
        printf("\n\n\n");
        system("PAUSE");
        return 0;
    }


    //fonction somme des valeurs du tableau...
    long sommeTableau(long tableau[], long tailleTableau)
    {
         //variables...
         long i = 0, somme = 0;
         
         for (i = 0 ; i < tailleTableau ; i++)
         {
             somme = somme + tableau[i];
         }
         
         return somme;
    }


    //fonction moyenne des valeurs du tableau...
    double moyenneTableau(long tableau[], long tailleTableau)
    { 
           //variable
           double moyenne = 0;
           long somme = sommeTableau(tableau, tailleTableau);
           
           moyenne =  somme / tailleTableau;
           
           return moyenne;
    }
           

    //fonction copie de tableau...       
    void copie(long tableauOriginal[], long tableauCopie[], long tailleTableau)
    {
         //variable...
         long i;
         
         for (i = 0 ; i < tailleTableau ; i++)
         {
         tableauCopie[i] = tableauOriginal[i];
         }
    }


    //fonction parcourir du tableau original et copié - juste pour verifier -...
    void parcourir(long tableauOriginal[], long tableauCopie[], long tailleTableau)
    {
         //variable...
         long i;

         for (i = 0 ; i < tailleTableau ; i++)
         {
            printf("\n Valeur du tableau original %ld. \n", tableauOriginal[i]);
            printf("Valeur de la copie du tableau %ld. \n", tableauCopie[i]);
         }
    }

    //fonction maximun tableau...
    void maximunTableau(long tableau[], long tailleTableau, long valeurMax)
    {
         //variable...
         long i;

         for(i = 0 ; i < tailleTableau ; i++)
         {
               if(tableau[i] > valeurMax)
               {
                             tableau[i] = 0;
               }
         }
    } 

    //fonction ordoner tableau... - super titre naon ? -...
    void ordonnerTableau(long tableau[], long tailleTableau)
    {
         //variables...
         long i, p, retrouver = 0;
         
         for (p = 0 ; p < tailleTableau - 1 ; p++)
         {
             for (i = p + 1 ; i < tailleTableau ; i++)
             {
                 if(tableau[p] < tableau[i] )
                 {
                               retrouver = tableau[p];
                               tableau[p] = tableau[i];
                               tableau[i] = retrouver;
                 }
             }
         }
    }
    • Partager sur Facebook
    • Partager sur Twitter
      1 mai 2006 à 16:14:51

      Je n'ai pas eu le courage de tout regarder lol .... pour ne pas dire que je n'ai regardé que la somme ^^ ... en tous cas toi tu as eu du courage.

      As-tu testé ton code pour vérifier si tout fonctionne ?
      Pour la somme à première vue, il semble que celle affichée soit inférieure de 222 à ce qu'elle devrait être, mais je n'ai regardé que rapidement, et peut-être que je me trompe ....

      J'aurais donc plutôt mis dans ta boucle for "i <= tailleTableau", non ?
      • Partager sur Facebook
      • Partager sur Twitter
        3 mai 2006 à 18:35:21

        Salut,

        Moi je suis d'accord pour la somme, j'ai fait la meme chose et ca fonctionne.

        Sinon ce qui m'interesse plus c'est la moyenne, j'ai a peut pre la memme chose que toi sauf que ca me renvoie toujour un entier. :/

        PS: Je vien de tester ton Code, tu a le memme problemme, 403/8 ca fait 50.375 pas 50 :).
        si quelqun a un piste, ca m'interesse.

        merci.

        • Partager sur Facebook
        • Partager sur Twitter
          3 mai 2006 à 18:59:39

          `somme' et `tailleTableau' sont des variables de type long ; moyenne est de type double.

          Selon la règle des convertions arithmétiques, le résultat est un double. Or :

          Citation : K&R, A6.3

          Lorsqu'une valeur de type entier est convertie en flottant, et si elle n'est pas représentable exactement bien qu'elle soit à l'intérieur du domaine de représentation du type flottant, le résultat est la valeur représentable la plus proche, soit par défaut, soit par excès.

          • Partager sur Facebook
          • Partager sur Twitter
            5 mai 2006 à 10:32:01

            Bonjours,

            voila la seul solution que j'ai trouver, c'est d'utiliser un pointeur sur moyenne et ca marche !!

            Citation : Code

            void moyenneTableau(long tableau1[], long tailleTableau, double *Pmoyenne)
            {
            double somme = sommeTableau(tableau1, tailleTableau);

            *Pmoyenne = somme / tailleTableau ;

            }



            j'suis heureux :).
            • Partager sur Facebook
            • Partager sur Twitter
              5 mai 2006 à 11:38:34

              Citation : Golderack

              Bonjours,

              voila la seul solution que j'ai trouver, c'est d'utiliser un pointeur sur moyenne et ca marche !!

              void moyenneTableau(long tableau1[], long tailleTableau, double *Pmoyenne)
              {
                   double somme = sommeTableau(tableau1, tailleTableau);

                   *Pmoyenne = somme / tailleTableau ;

              }



              j'suis heureux :).



              Ca aurait été plus simple de renvoyer la moyenne directement que de passer par un pointeur ... Suffit de caster la somme :
              double moy_tab(int *tab, int n)
              {
                  int somme = 0;
                  int i = 0;

                  while(i < n)
                      somme += tab[i++];


                  return ((double)somme / n);
              }
              • Partager sur Facebook
              • Partager sur Twitter
                7 mai 2006 à 10:27:08

                moi ma fonction pour la valeurMax ne marche pas, je me suis un peu insipiré de la tienne mais ca ne va toujours pas


                Donc si quelqu'un pouvais m'aider^^
                je ne trouve pas le moyen de mettre a zero les valeur depassant valeurMax :(
                • Partager sur Facebook
                • Partager sur Twitter
                  7 mai 2006 à 10:35:31

                  Salut,

                  Moi j'ai fait ca pour La Valeure Max

                  void maximumTableau(long tableau1[], long tailleTableau, long valeurMax)
                  {   
                       long i;
                       for (i=0; i < tailleTableau; i++)
                       {
                          if (tableau1[i] > valeurMax)
                          {
                                         tableau1[i] = 0;
                          }
                       }
                  }


                  • Partager sur Facebook
                  • Partager sur Twitter
                    7 mai 2006 à 12:12:28

                    Et tu met une boucle pourquoi?

                    C'est la boucle pour afficher tout le tableau ou bien qui contribue a mettre a 0 les valeur depassant valeurMax?

                    Parce que moi j'ai fais une fonction "affiche" pour afficher mon tableau.

                    et si je retape ton code sans la boucle for, quand j'affiche le tableau la premiere valeur est a 0 (alors que elle est plus petite que valeurMax) et les autre s'affichent normalement.^^

                    Merci vos future reponses^^
                    • Partager sur Facebook
                    • Partager sur Twitter
                      8 mai 2006 à 0:37:22

                      Tu veux pas nous envoyer ton code source ? Ca sera plus simple ensuite de te
                      le corriger et de t'expliquer ce que tu n'auras pas compris. :)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        8 mai 2006 à 19:18:54

                        void maxTableau(long tableau[], long tailleTableau, long valeurMax)
                        {
                          long i = 0;
                         
                           if ( tableau[i] > valeurMax )
                           {
                             
                                } 
                        }

                        void affiche(long tableau[],long tailleTableau)
                        {
                             long i = 0
                           
                           
                           for (i= 0;i < tailleTableau ; i++)
                            {
                                printf("%ld\n\n",tableau[i]);
                               
                                }
                               
                             
                        }


                        voila le code de "tableau.c", donc sans la fonction main^^(oui, je sais que vous le savez :p)

                        vous verrez que je n'ai rien mis dans le if, j'ai besoin de vous pour ca :)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          9 mai 2006 à 10:59:00

                          Citation : Web-X

                          Et tu met une boucle pourquoi?


                          • Relis la spec...
                          • Ecris un algo qui fonctionne sur le 'papier' (Ca peut être ton éditeur de texte favori...)
                          • Code l'algo.

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Music only !

                          Exo du tableau...

                          × 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