Partage
  • Partager sur Facebook
  • Partager sur Twitter

Tableau, conseil

Exercice 4!

    28 avril 2006 à 19:03:25

    Salut à tous... Je sais, c'est mon premier message.

    Bon faut peut-être se présenter, mais je m'en excuse, je n'ai actuellement pas le temps :p
    Toujours est-il que j'ai un problème.
    Peut-être n'ai je pas bien compris le principe, les interdictions, etc... des tableaux en c... Et donc mon code ne marche pas.
    void maximumTableau(long tableau[], long tailleTableau, long valeurMax)
    {
         long i = 0;

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

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



    L'erreur se trouve dans l'initialisation du tableau dans la fonction.
    Je ne veux pas qu'on me dise "Mais regarde! Y'a des solutions partout." Je me refuse à les lires.
    Je veux juste comprendre mon erreur et pas reconstruire mon programme à partir de celui d'un autre.

    Merci :)


    ET bonne soirée ^^ *


    edit: changement du code :)... ça ne marche toujours pas, mais j'ai bon espoir ^^
    • Partager sur Facebook
    • Partager sur Twitter
      28 avril 2006 à 19:07:05

      essaye deja long int
      plutot que long tout seul

      et évite de redéclarer le tableau une dexième fois
      • Partager sur Facebook
      • Partager sur Twitter
        28 avril 2006 à 19:08:14

        Salut!

        Ton
        if (tableau[i] > valeurMax)
        ne marche pas car i n'a pas de valeur.( en fait si mais...).
        Il faut faire
        for (i = 0; i < tailleTableau; i++)
        .
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          28 avril 2006 à 19:09:36

          Bon soir Diacred,
          Je n'est pas un trés bon niveau en C,mais en voyant ton code ,je voit que tu n'a pas fermer ta fonction.

          Tu as oublier de mettre "long i = 0;"
          Et je ne pense pas que tu doit mettre
          "long tableau[i] = {0};"
          Met seulement :
          "tableau[i] = {0};"

          Enfin ce n'est pas ton code complet donc je ne peut pas te dire ou est ton erreur .

          A Bientot.
          Hybrix

          • Partager sur Facebook
          • Partager sur Twitter
            28 avril 2006 à 19:12:46

            Merci pour vos réponses :)

            Je n'ai moi même pas un très bon niveau en C, loin de là :p

            J'ai fermé ma fonction, mais le copier coller à raté :p

            Je vais essayer celà tout de suite et vous dire si ça marche :)

            defnet: je n'ai pas compris ton "éviet de redéclarer le tableau une seconde fois :)"
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              28 avril 2006 à 19:17:09

              Je pense qu'il a dit sa car justement tu as marquer (dans la source ci-dessous) :


              if (tableau[i] > valeurMax)
              {       
                       long tableau[i] = {0}; //Ici tu as remis long devant tableau ,sa revient a le declarer.
              }

              • Partager sur Facebook
              • Partager sur Twitter
                28 avril 2006 à 19:17:56

                Citation : DefneT

                essaye deja long int
                plutot que long tout seul


                Pourquoi ?
                • Partager sur Facebook
                • Partager sur Twitter
                Music only !
                  28 avril 2006 à 19:21:32

                  C'est corriger, et ça marche toujours pas :p
                  Maintenant c'est plus une erreur d'initialisation... :p

                  C'est "in function maximumTableau,
                  syntax error before '{' token
                  syntax error before "for"
                  [Build Error] [Fonction.o] Error 1 "

                  ^^ incorrigible compilateur :)

                  Au fait: le nouveau code est dans le message 1er :)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 avril 2006 à 19:22:00

                    Ca te permet de voir que c'est un entier directement. D'ailleurs tu as bien fait "%ld", l = long et d = int.
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      28 avril 2006 à 19:22:39

                      As tu declarée ta fonction dans un .h ou au dessus de la fonction main ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                        28 avril 2006 à 19:23:31

                        "Ca te permet de voir que c'est un entier directement. D'ailleurs tu as bien fait "%ld", l = long et d = int."
                        Tien je savais pas :)
                        Fais quoi si je met pas %l tout seul? bug?


                        Hybrix ma fonction est dans un fichier "Fonction.c" ^^
                        Enfin ça marchais très bien avec tous les autres exo :)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          28 avril 2006 à 19:26:39

                          dans ta condition, je ne vois pas ce que les accolades viennent faire...

                          tableau[i] est *une* case, donc linitialiser à zéro comme un variable 'normale' :

                          tableau[i] = 0;
                          • Partager sur Facebook
                          • Partager sur Twitter
                            28 avril 2006 à 19:28:27

                            Ah d'accccoooooord, je savais, pas.
                            Je pensais qu'on initialisait pareillement que dans la fonction main ^^

                            edit: après test , ça marche!

                            Muahahah, merveilleux, je te remerci :)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              28 avril 2006 à 19:31:23

                              Voila un cde tout beau :-)


                              void maximumTableau(int tableau[], int tailleTableau, int valeurMax)
                              {
                              int i;

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

                                    printf("%d", tableau[i]);
                              }
                              }
                              • Partager sur Facebook
                              • Partager sur Twitter
                                28 avril 2006 à 19:35:42

                                Citation : DefneT

                                Ca te permet de voir que c'est un entier directement. D'ailleurs tu as bien fait "%ld", l = long et d = int.


                                Pas du tout. "l" signifie long (ou long int) et "d" signifie décimal (comme "x" signifie héxadécimal, "o", octal, "f", flottant etc.)

                                on peut écrire :
                                • char
                                • signed char
                                • unsigned char
                                • short ou short int ou signed short ou signed short int
                                • unsigned short ou unsigned short int
                                • int ou signed int
                                • unsigned ou unsigned int
                                • long ou long int ou signed long int
                                • unsigned long ou unsigned long int

                                • Partager sur Facebook
                                • Partager sur Twitter
                                Music only !
                                  28 avril 2006 à 19:38:45

                                  je suis censé savoir ça à ce point du cours? :D
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    28 avril 2006 à 19:41:05

                                    Oups c'est vrai, j'ai tapé plus vite que je le pensais :-p
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Tableau, conseil

                                    × 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