Partage
  • Partager sur Facebook
  • Partager sur Twitter

exercice 5 formation mathieu nebra

un trieur de tableau (en croissant)

Sujet résolu
    27 août 2021 à 21:04:20

    #include <stdio.h>
    #include <stdlib.h>
    
    void ordonnerTableau(int tableau[], int tailleTableau);
    
    int main()
    {
        int tableau[6] = {23,45,51,22,10,5};
        ordonnerTableau(tableau,6);
        return 0;
    }
    
    void ordonnerTableau(int tableau[], int tailleTableau)
    {
        int relais, relais1;
    
        for (int i=0; i<tailleTableau;  i++)
        {
            if (tableau[i] < (tableau[i]+1))
            {
                relais = (tableau[i]+1);  
                relais1 = tableau[i]; 
                (tableau[i]+1) = relais1; // error: lvalue resquired as left of assignment
                tableau[i] = relais;
                /* (tableau[i]+1)  =  relais  =  tableau[i] 
                    tableau[i]  =  relais1  =  (tableau[i]+1) 
                    
                    soit   (tableau[i]+1) = tableau[i] 
                    et      tableau[i] = (tableau[i]+1)
                    
                    donc si la valeur suivant (exemple) tableau[0] (23) < tableau[1] (45)
                    alors     tableau[0] = 45 < tableau[1] = 23
                    c'est un genre de trieure 
                    */
            }
        }
    }
    Bonjours/bonsoir 
    j'ai une erreur frustrante ligne 23 je ne comprend pas pourquoi ...
    merci de votre aide précieuse en vous souhaitent une agréable journnée

    -
    Edité par RhoufirAnouar 27 août 2021 à 21:26:33

    • Partager sur Facebook
    • Partager sur Twitter
      27 août 2021 à 21:21:30

      Bonjour,

      Manque de Politesse

      Votre message ne comporte pas ou peu de formules de politesse (« Bonjour », « Merci », « Au revoir », etc.). Les règles du site exigent que chaque nouveau message comporte un minimum de politesse. Après tout, les gens qui répondent le font gratuitement, sur leur temps libre. Ils méritent bien un minimum de considération, n'est-ce pas ?

      Liens conseillés

      • Partager sur Facebook
      • Partager sur Twitter
        27 août 2021 à 23:11:44

        tableau[i] c'est une variable tu peux lui assigner une valeur

        mais tableau[i]+1 C'est une valeur et tu ne peux pas lui assigner une valeur, c'est comme si tu voulais faire 2=5 or 2 sera toujours 2 et jamais 5

        mais c'est peut-etre plutôt :  tableau[i+1] = relais1;  que tu voulais écrire ? 

        -
        Edité par rouIoude 27 août 2021 à 23:12:09

        • Partager sur Facebook
        • Partager sur Twitter
        ...
          28 août 2021 à 1:12:50

          Je vois que tu fais encore de la magie ... pas de printf() ?
          Je seconde rouIoude, il faut écrire  tableau[i+1] et non tableau[i]+1
          Mais ce n'est pas tout. Tu n'as qu'une boucle dans ta fonction de tri.
          Que ce passera-t-il a la fin de cette boucle?
          Tu n'auras fait qu'une chose. Tu auras placé le plus grand à la dernière position.
          Le reste sera grossièrement dans le même ordre qu'au début.
          Je te laisse le coder, mais tu devras trier le sous-tableau du début jusqu'à l'avant dernière position.
          Tu auras placé le deuxième plus grand à cet endroit.
          Le truc est de recommencer tant que le sous-tableau aura une longueur supérieure à un.
          • Partager sur Facebook
          • Partager sur Twitter

          Le Tout est souvent plus grand que la somme de ses parties.

            28 août 2021 à 23:07:11

            #include <stdio.h>
            #include <stdlib.h>
            
            void ordonnerTableau(int tableau[], int tailleTableau);
            
            int main()
            {
                int tableau[6] = {23,45,51,22,10,9};
                printf("tableau non décroissant :\n\n");
                for (int u=0; u<6; u++)
                {
                    printf("ligne %d = %d\n" ,u, tableau[u]);
                }
                ordonnerTableau(tableau,6);
                printf("tableau décroissant :\n\n");
                for (int i=0; i<6; i++)
                {
                    printf("ligne %d = %d\n" ,i, tableau[i]);
                }
                return 0;
            }
            
            void ordonnerTableau(int tableau[], int tailleTableau)
            {
                int relais, relais1;
                for (int u=0; u<tailleTableau;  u++)
                {
                for (int i=0; i<tailleTableau;  i++)
                {
                    if (tableau[i] < tableau[i+1])
                    {
                        relais = tableau[i+1];
                        relais1 = tableau[i];
                        tableau[i+1] = relais1; // error: lvalue resquired as left of assignment
                        tableau[i] = relais;
                        /* (tableau[i]+1)  =  relais  =  tableau[i]
                            tableau[i]  =  relais1  =  (tableau[i]+1)
            
                            soit   (tableau[i]+1) = tableau[i]
                            et      tableau[i] = (tableau[i]+1)
            
                            donc si la valeur suivant (exemple) tableau[0] (23) < tableau[1] (45)
                            alors     tableau[0] = 45 < tableau[1] = 23
                            c'est un genre de trieure
                            */
                    }
                    else
                    {
                        tableau[i] = tableau[i];
                    }
                }
                }
            }

            Bonjours / Bonsoir , sincèrement désolé du temps d'attente, je ne vous ai pas répondu de suite car j'ai eu un voyage en train a faire (je vous épargne les détaille) enfin bref, j'ai pris part de vos conseil qui on réussis a m'aider car désormais la console m'affiche cela :

            nous remarquons l'apparition d'un "16" (ligne 4) écrit nul part dans le code et la disparitions du 9 qui était a la base présent dans la liste de nombre, on pourrait croire que le 9 a subit une addition mais aucun addition (sauf incrémentation) n'ait présente dans le code ...  alors je vous le demande ... que c'est il passé ? un vole ? un échange ? cet ordinateur ne cessera donc jamais de me jouer des tours ? 

            PS: ce n'ai qu'une supposition mais celons moi, l'erreur pourrait venir de la ligne 30 car si on compare la dernière valeur soit tableau[6] a tableau[6+1]qui reviens a dire tableau[7] et bien on se retrouve avec une ligne qui n'existe pas ... encore une fois merci de votre aide .

            -
            Edité par RhoufirAnouar 28 août 2021 à 23:24:51

            • Partager sur Facebook
            • Partager sur Twitter
              28 août 2021 à 23:42:22

              Et oui, quand i vaut 5 et que tu fait i+1 ça fait 6 et ton tableau allant des indices 0 à 5 tu te retrouves en dehors du tableau (les indices de tableau vont de 0 à n-1).

              PS : tu n'as toujours pas enlevé ce else inutile ligne 47 à 50 ?

              • Partager sur Facebook
              • Partager sur Twitter
              ...
                29 août 2021 à 0:11:13

                Génial ! ça fonctionne j'ai simplement fait :

                for (int i=0; i<tailleTableau-1;  i++)

                ligne 28 

                PS:j'ai mis le else (meme si il sert un peu a rien je l'admet) car au début j'essayais simplement de bidouiller le code source pour qu'il fonction, mais  maintenant quil marche et bien je l'ai supprimé. ce sujet est maintenant résolu je re merci tout les participent qui y ont consacrer du temps pour me mettre sur la bonne voie je vous dit a bientôt :) 

                • Partager sur Facebook
                • Partager sur Twitter

                exercice 5 formation mathieu nebra

                × 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