Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exercice tableau

    19 juillet 2006 à 14:08:18

    Salut, j'ai quelque problème avec deux exercice.Le problème c'est que je ne l'ai comprend pas vraiment enfin je ne voie pas ce qu'il faut faire exactemetn et je voudrais juste que vosu me guidiez un petit peu pour que je puisse les faire je ne veut pas de réponse hein ;)

    voici le premier :

    Citation : M@theo


    Exercice 3 : créer une fonction copierTableau qui prend en paramètre 2 tableaux. Le contenu du premier tableau devra être copié dans le second tableau.
    Prototype :

    void copie(long tableauOriginal[], long tableauCopie[], long tailleTableau);


    Et le deuxième:

    Citation : M@theo


    Exercice 5 (plus difficile) : 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} !
    Cet exercice est un peu plus difficile que les autres, mais est tout à fait réalisable. Ca va vous occuper un petit moment

    Prototype :

    void ordonnerTableau(long tableau[], long tailleTableau);


    Voilà merci d'avance pour vos réponses ;)
    • Partager sur Facebook
    • Partager sur Twitter
      19 juillet 2006 à 14:41:21

      Exo 3 :
      C'est simple, tu as 2 tableaux. Le premier contient n'importe quel nombre et le second contient 0. Après être entré dans ta fonction, la tableau qui contenait des 0 doit maintenant contenir les nombres de l'autre tableau.

      Exo 5 :
      T'as 2 tableaux. Le premier contient n'importe quel nombre et le second contient 0. Après être entré dans ta fonction, la tableau qui contenait des 0 doit maintenant contenir les nombres de l'autre tableau ORDONNES.
      Ex de ton main :

      long tableau1[4] = {15,9,3,1}
      long tableau2[4] = {0}
      ordonnerTableau (tableau1, tableau2);
      tableau2 doit valeur 1,3,9,15 après la fonction
      • Partager sur Facebook
      • Partager sur Twitter
        19 juillet 2006 à 17:37:32

        Ok merci je vais essayer de trouver pour l'exercice 5 il à l'air un peu dur^, mais en bidouillant je vias reussir ^^
        J'ai qu'a écrier moi meme les valeurs dans l'ordre :p (c'est pour rire hein:d)
        mercid e m'avoir repondu coyotte
        • Partager sur Facebook
        • Partager sur Twitter
          19 juillet 2006 à 17:55:40

          Pas de problème, un forum est là pour ça.
          Bonne chance pour le 5e.
          Persévérance, persévérance, persévérance,... ;)
          • Partager sur Facebook
          • Partager sur Twitter
            19 juillet 2006 à 21:37:48

            Re, après avoir fini l'exercice 3, ben j'avais pas remarqué mais la fonction moyenneTableau ne marche plksu enfin elle affiche le resultat et plus la moyenne sa fait 2 heure que j'essaie de trouver ce qu'il ne va pas, et j'ai meme pas pu commencer l'exo 5.

            voici le main :

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

            int main(int argc, char *argv[])
            {
                long tableau[5] = {3, 3, 3, 6, 3}, resultat, tableauCopie[5] = {0}, choix = 1;
                long tableauOriginal[5] = {2, 5, 6, 7, 9};
                double moyenne = 0;
               
                Menu(choix, tableau, tableauOriginal, 5);
                resultat = sommeTableau(tableau, 5);
                moyenne = moyenneTableau(5, resultat);
               
                printf("Le resultat de la somme des nombres du tableau est %ld\n", resultat);
                printf("\nLa moyenne de tout les nombres du tableau est %lf\n", moyenne);
               
                if (choix == 1)
                {
                maximumTableau(tableau, 5);
                }
                copie(tableau, tableauCopie, 5);

              system("PAUSE");     
              return 0;
            }


            voici le fichier avec les fonction :
            #include <stdio.h>
            #include <stdlib.h>
            #include "calculTableau.h"

            void Menu(long choix, long tableau[], long tableauOriginal[], long tailleTableau)
            {
             do {
                 printf("Choisissez le tableau de votre choix il contiennent des chiffres differents !\n");
                 printf("1.Tableau\n");
                 printf("2.Tableau original : ");
                 scanf("%ld", &choix);
                 printf("\n");
                   
                     if (choix == 1)
                    { int main(int argc, char *argv[]);
                    }
                   
                     else if (choix == 2)
                    {
                        long i;
                        long valeurMax = 10000;
                 
                     for(i = 0; i  < tailleTableau; i++)
                {
                  tableau[i] = tableauOriginal[i];     
                     
                }     
                     
                     }
                     else
                        {
                         printf("##Erreur## Veuillez reecrire votre choix !!!\n");
                        }   
                       
                     
               
               } while (choix > 2 || choix < 1);             
                 
                 return choix;
            }

            long sommeTableau(long tableau[], long tailleTableau)
            {
                long resultat = 0, i;
               
                for(i = 0; i < tailleTableau; i++)
                {   
                    resultat += tableau[i];
                }

                return resultat;
            }


            double moyenneTableau(long tailleTableau, long resultat)
            {
               
                return  (double)resultat / (double)tailleTableau;
            }   

            void maximumTableau(long tableau[], long tailleTableau)   
            { 
                 long i, valeurMax = 3;
                 
                printf("\nLes valeurs du tableau au dessus de %ld sont mise a 0 :\n", valeurMax)
                 
                 for(i = 0; i < tailleTableau; i++)
                {   
                    if (tableau[i] > valeurMax)
                    {
                    tableau[i] = 0;
                    }
                 printf("%ld\n", tableau[i]);
                }   
                printf("\n");
            }     
               
               
            void copie(long tableau[], long tableauCopie[], long tailleTableau)
            {   
                 long i;
                 printf("valeur du tableau :\n\n");
                 for(i = 0; i  < tailleTableau; i++)
                {
                  tableauCopie[i] = tableau[i];     
                  printf("%ld\n", tableau[i]);
                } 
                 printf("\nvaleur du tableau copier :\n\n");
                 
                 for(i = 0; i  < tailleTableau; i++)
                {
                  printf("%ld\n", tableauCopie[i]);
                }
            }   


            prototype :

            long sommeTableau(long tableau[], long tailleTableau);
            double moyenneTableau(long tailleTableau, long resultat);
            void maximumTableau(long tableau[], long tailleTableau);
            void copie(long tableauOriginal[], long tableauCopie[], long tailleTableau);
            void Menu(long choix, long tableau[], long tableauOriginal[], long tailleTableau);

            Voilà je sais c'est un peu long :o si vous trouvez le problème sa seriat cool, il ya un autre petit problème lorsqu'on choisie un choix ,et bien le programme affiche les valeurs du tableau et ceux qui sont au dessus de 3 devienne 0.
            Ensuite le programme est censé afficher les valeurs du tableau mais il affiche toujours le resultat de la fonction maximumTableau alors que celle ci ne renvoie aucune valeur ><.
            Enfin pour les experts regarder vous devriez comprendre, ceci est un défi ceux qui résouderont mon code auront un super remerciment de ma part :p;)
            Merci d'avance pour vos réponses et désoler si mon code est completement n'importe quoi et nul, pour moi il est bien :s
            • Partager sur Facebook
            • Partager sur Twitter
              20 juillet 2006 à 11:50:33

              sommeTableau > ok.
              Menu >
              - Menu est de type void, or, tu veux retourner la variable choix.
              - Ensuite, je comprends pas trop ce que tu veux faire en mettant ca :
                    if (choix == 1)
                      { int main(int argc, char *argv[]);
                      }

              Heu, c'est sencé être un appel de la fonction main ? Je te rappelle que pour appeller une fonction, on ne met pas son type. Et pis, je comprends pas ce que tu veux faire. Donc, je vais faire simple : je l'ai supprimé :p

              copie > ok.

              moyenneTableau > Il suffisait de mettre un des 2 termes en double et de laisser l'autre en long. Fin, je suis pas trop spécialiste de ce qu'on peut faire avec les types et les transformations... Je sais juste que mon code marche :lol:


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

              long sommeTableau(long tableau[], long tailleTableau);
              double moyenneTableau(double tailleTableau, long resultat);
              void maximumTableau(long tableau[], long tailleTableau);
              void copie(long tableauOriginal[], long tableauCopie[], long tailleTableau);

              int main(int argc, char *argv[])
              {
                  long tableau[5] = {4, 3, 9, 0, 1}, resultat = 0, tableauCopie[5] = {0}, i = 0, tableauOriginal[5] = {2, 5, 6, 7, 9};
                  double moyenne = 0;
                 
                  for (i = 0; i < 5; i++)
                      printf("\n Valeur tableau avant modif : %ld",  tableau[i] );
                 
                  printf ("\n \n");
                 
                  resultat = sommeTableau(tableau, 5);
                  moyenne = moyenneTableau(5.0, resultat);
                 
                 
                  printf("\nLe resultat de la somme des nombres du tableau est %ld\n", resultat);
                  printf("\nLa moyenne de tout les nombres du tableau est %lf\n", moyenne);
                 
                  copie(tableau, tableauCopie, 5);
                   maximumTableau (tableau, 5);
                system("PAUSE");     
                return 0;
              }



              long sommeTableau(long tableau[], long tailleTableau)
              {
                  long resultat = 0, i;
                 
                  for(i = 0; i < tailleTableau; i++)
                  {   
                      resultat += tableau[i];
                  }

                  return resultat;
              }


              double moyenneTableau(double tailleTableau, long resultat)
              {
                 
                  return  resultat / tailleTableau;
              }   

              void maximumTableau(long tableau[], long tailleTableau)   
              {
                   long i, valeurMax = 3;
                   
                  printf("\nLes valeurs du tableau au dessus de %ld sont mise a 0 :\n", valeurMax);
                   
                   for(i = 0; i < tailleTableau; i++)
                  {   
                      if (tableau[i] > valeurMax)
                      {
                        tableau[i] = 0;
                      }
                   printf("%ld\n", tableau[i]);
                  }   
                  printf("\n \n ");
              }     
                 
                 
              void copie(long tableau[], long tableauCopie[], long tailleTableau)
              {   
                   long i;
                   
                   for (i = 0; i < 5; i++)
                  printf("\n Valeur tableauCopie avant modif : %ld",  tableauCopie[i] );

                   for(i = 0; i  < tailleTableau; i++)
                  {
                    tableauCopie[i] = tableau[i];     
                    printf("\nTableau Copie vaut maintenant: %ld", tableau[i]);
                  }
              } 


              • Partager sur Facebook
              • Partager sur Twitter
                23 juillet 2006 à 19:23:59

                Bonjour, merci pour ta réponse, avec menu j'ai voulu trop compliquer >< donc j'ai tout mélanger mais sinon avant sa marcher :p , bon passons à l'exercice 5:
                Sa fait plusieurs jours pas a temps plein :p , que j'essaie mais je ne voie pas, mais alors pas du tout comment m'y prendre peut etre c'est tellement simple à faire que je ne voie pas.
                Si quelqu'un peut me dire comment faire j'en serais ravi :D
                Lol une semaine bloquer sur ce chapitre abuser ^^ , pourtant les Tableaux c'est fastoche c'est les exos qui sont dur :p
                • Partager sur Facebook
                • Partager sur Twitter
                  23 juillet 2006 à 20:19:56

                  Il faut que tu penses concrètement.
                  Imaginons des verres avec des liquides dedans.
                  Les verres ce sont les variables, le liquide contenu, bah ce sont leurs valeurs :p .
                  Pour transvaser les liquides tout en gardant le meme ordre dans les verres la seule possibilité (que jarrive a voir avec mon petit cerveau sous développé) c'est de faire entrer en jeu un verre supplémentaire.
                  Pour échanger le contenu de deux verres tu mets donc le contenu de l'un dans le verre rajouté puis le contenu du second verre dans celui du premier et enfin le contenu du verre rajouté dans le second verre (c'est pas si compliqué que ça en a l'air).
                  Sinon si tu as pas de verres tu peux toujours boire le contenu du premier verre puis verser le liquide du deuxième dans le premier puis recracher ce que tu as dans tes joues de hamster dans le second. :D (la voila la 2ème solution on me la fait pas à moi hein).

                  Ca a pas du taider beaucoup mais qui sait :o
                  • Partager sur Facebook
                  • Partager sur Twitter
                    23 juillet 2006 à 21:11:05

                    Euh dsl masi j'ai pas très bien compris ton truc enfin en totu cas sa va pas me dire commetn faire hein ^^
                    • Partager sur Facebook
                    • Partager sur Twitter
                      23 juillet 2006 à 21:25:20

                      bonjour,moi aussi je me suis arriver à ce chapitre qui est facile, mais quand j'ai arrivé aux exo je me suis blocé sauf pour le 1er exo.Mais pour les autres j'ai pas arrivé à les résoudre car ils me semblent in peu compliqué surtout pour un débutant.pour l'exo 2 j'ai meme pas compris " la moyenne des valeurs".Peut-tu m'aider si tu as arriver à le faire.merci bien
                      • Partager sur Facebook
                      • Partager sur Twitter
                        24 juillet 2006 à 11:25:01

                        une moyenne c'est somme des termes divivées apr le nombre de termes.
                        Or ,a priori tu as deja reussi a faire l'exercice 1, donc tu as la somme des termes du tableau. Pour le nombre des termes, si tu utilise les même prototypes de fonction que M@teo, regarde quels arguments sont donnés a la fonction ;)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          24 juillet 2006 à 12:10:32

                          @amiraman Oui j'y suis arrivé à le faire si tu veut les réponse regarde plus en haut ya le code des 4 exercices ;)
                          une some c'est l'addition de tout les nombre d'un tableau:(tableau[1]+tableau[2]+tableau[].....)
                          une moyenne c'est cet somme divisé par le nombre de case.
                          Si dans notre tableau il y'a 5 case contenant les valeurs 2 donc : long tableau[5] = {2, 2, 2, 2, 2};
                          la somme est égal à 10 qu'on divise par le nombre de case dut ableau donc 10 / 5 sa fait 2:d
                          voilà sinon moi j'attend toujours de l'aide pour mon exercice 5 hein ne me laisez pas omber jsusi si pres du but là :p
                          • Partager sur Facebook
                          • Partager sur Twitter
                            24 juillet 2006 à 14:44:30

                            En lisant un peu sur le tri par séléction, j'ai réussi un code :
                            void ordonnerTableau(long tableau[], long tailleTableau)
                            {
                                int i, min, j , x;
                                for(i = 0 ; i < tailleTableau - 1 ; i++)
                                {
                                    // On approprie à min la valeur de i à chaque tour de boucle
                                    min = i;
                                    for(j = i+1 ; j < tailleTableau ; j++)
                                    {
                                        if(tableau[j] < tableau[min]) //Si un nombre est plus petit que son précédent
                                            min = j; // on approprie à min la valeur de j
                                    }
                                    if(min != i)  // tant que min est différent de i
                                    {
                                        // On échange les deux nombres
                                        x = tableau[i];
                                        tableau[i] = tableau[min];
                                        tableau[min] = x;
                                    }
                                }
                            }

                            EDIT : avec le tri par bulles:
                            void ordonnerTableau(long tableau[], long tailleTableau)
                            {
                                    int i   = 0; /* Indice de répétition du tri */
                                    int j   = 0; /* Variable de boucle */
                                    int nombre = 0; /* Variable de stockage temporaire */
                             
                                    /* Booléen marquant l'arrêt du tri si le tableau est ordonné */
                                    int en_desordre = 1;
                             
                                    /* Boucle de répétition du tri et le test qui
                                       arrête le tri dès que le tableau est ordonné */

                                    for(i = 0 ; (i < tailleTableau) && en_desordre; i++)
                                    { 
                                            /* Supposons le tableau ordonné */
                                            en_desordre = 0;
                             
                                            /* Vérification des éléments des places j et j-1 */
                                            for(j = 1 ; j < tailleTableau - i ; j++)
                                            {
                                                    /* Si les 2 éléments sont mal triés */
                                                    if(tableau[j] < tableau[j-1])
                                                    {
                                                            /* Inversion des 2 éléments */
                                                            nombre = tableau[j-1];
                                                            tableau[j-1] = tableau[j];
                                                            tableau[j] = nombre;
                             
                                                            /* Le tableau n'est toujours pas trié */
                                                            en_desordre = 1;
                                                    }
                                            }
                                    }
                            }
                            • Partager sur Facebook
                            • Partager sur Twitter
                              24 juillet 2006 à 19:09:06

                              merci bien mes amis pour votre aide
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Exercice 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