IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Fonctions & Tableau


Sujet :

C

  1. #1
    Membre à l'essai
    Avatar de shana59
    Femme Profil pro
    Lycéen
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 17
    Points
    17
    Billets dans le blog
    1
    Par défaut Fonctions & Tableau
    Re bonsoir ,
    Cherchant une maitrise du langage C je m'entraine au fur & à mesure du tutoriel et la je suis confronté à un Soucis enfin aulieu de m'expliquer je pense que c'est plus compréhensible en voyant le code directement
    Ma Fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    void ordonnerTableau(int tableau[], int tailleTableau)
    {
        int i=0;
        int inter=0;
        for (i=0;i<tailleTableau;i++)
        {
            if (i>0)
            {
               if(tableau[i-1]>tableau[i])
                {
                    inter=tableau[i];
                    tableau[i]=tableau[i-1];
                    tableau[i-1]=inter;
                }
     
            }
     
        }
    }
    Le Tableau envoyé à la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     tableau[0]=16;
        tableau[1]=48;
        tableau[2]=10;
        tableau[3]=50;
    & j'obtient :
    16
    10
    48
    50

    Quelqu'un pourrais m'expliquer pourquoi il ne traite pas le premier élément de mon tableau?

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 638
    Points : 10 592
    Points
    10 592
    Par défaut
    Pourquoi il ne traite pas le premier élément de mon tableau?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
               if(tableau[i-1]>tableau[i])
    Si (16 > 48), c'est ton algo qui n'est pas bon.

  3. #3
    Membre à l'essai
    Avatar de shana59
    Femme Profil pro
    Lycéen
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 17
    Points
    17
    Billets dans le blog
    1
    Par défaut
    if(tableau[i-1]>tableau[i]) // Donc si tableau[0] > tableau[1]
    {
    inter=tableau[i]; // On stock tableau[1] sans la variable inter
    tableau[i]=tableau[i-1]; // On met la valeur de tableau[0] dans tableau[1]
    tableau[i-1]=inter; //On met la valeur de inter dans tableau[0]
    }

    Je comprend pas ou es l'erreur...

    Edit : oui je comprend mieux mais je ne vois pas comment faire autrement car mon FOR lie chaque 1 case par tour

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 19
    Points : 23
    Points
    23
    Par défaut
    Pourquoi initialises-tu inter à 0 ?

  5. #5
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 697
    Points : 2 451
    Points
    2 451
    Par défaut
    Hello.

    Si tu initialise i à 0 et que tu fais une action que quand i y est strictement supérieur, autant commencer la boucle à 1 et virer le if, non ?
    Je fais appel aux esprits de Ritchie, Kernighan, Stroustrup et Alexandrescu
    Donnez moi la force, donnez moi le courage de coder proprement !

    « Ça marche pas » n'est PAS une réponse convenable, merci de détailler le souci en fournissant l’environnement, le code source, les commandes et les messages d'erreur.

    Ce club possède également un clavardage, on y trouve quelques perles entre deux sessions d'entraides.

  6. #6
    Membre à l'essai
    Avatar de shana59
    Femme Profil pro
    Lycéen
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 17
    Points
    17
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par valkheim Voir le message
    Pourquoi initialises-tu inter à 0 ?
    J'aime bien que mon code soit organiser et donc avec chaque variable initialiser a 0 des le debut du projet enfin je ne comprend pas pourquoi cet question sa n'influence en rien la fonction

  7. #7
    Membre à l'essai
    Avatar de shana59
    Femme Profil pro
    Lycéen
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 17
    Points
    17
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Daïmanu Voir le message
    Hello.

    Si tu initialise i à 0 et que tu fais une action que quand i y est strictement supérieur, autant commencer la boucle à 1 et virer le if, non ?
    Oui certe sa fait des lignes en moin mais bon la le problème viens de l'algorithme

  8. #8
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 192
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 192
    Points : 17 154
    Points
    17 154
    Par défaut
    Dans ce cas, comme tu ne nous a pas dit ce que doit faire ton algorithme, on ne risque pas de pouvoir te dire ce qui ne va pas dans ton code.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  9. #9
    Membre à l'essai
    Avatar de shana59
    Femme Profil pro
    Lycéen
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 17
    Points
    17
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par leternel Voir le message
    Dans ce cas, comme tu ne nous a pas dit ce que doit faire ton algorithme, on ne risque pas de pouvoir te dire ce qui ne va pas dans ton code.
    Autant pour moi sa me paraissait clair ,ma fonction est censé reorganiser le tableau qu'on lui envoie, du plus petit au plus grand

  10. #10
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 697
    Points : 2 451
    Points
    2 451
    Par défaut
    Citation Envoyé par shana59 Voir le message
    Autant pour moi sa me paraissait clair ,ma fonction est censé reorganiser le tableau qu'on lui envoie, du plus petit au plus grand
    Je pense que c'était évident, en tout cas quand on a l'habitude des algorithmes de tri.

    Tu cherches probablement à implémenter le tri à bulles, qui est le plus simple à comprendre.
    Tu peux voir sur cette page le principe et le fait que l'implémentation est légèrement différente.
    Je fais appel aux esprits de Ritchie, Kernighan, Stroustrup et Alexandrescu
    Donnez moi la force, donnez moi le courage de coder proprement !

    « Ça marche pas » n'est PAS une réponse convenable, merci de détailler le souci en fournissant l’environnement, le code source, les commandes et les messages d'erreur.

    Ce club possède également un clavardage, on y trouve quelques perles entre deux sessions d'entraides.

  11. #11
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    C'est un problème relatif à l'algorithmique plus qu'à l'implémentation. Ton programme doit recommencer à parcourir le tableau du début jusqu'à ce qu'aucune nouvelle permutation n'aie lieu. En l'état il n'effectue qu'un seul parcours.

    Le tri est une discipline de science informatique à part entière, je te recommande de te renseigner sur la myriade d'algorithmes existants afin d'en apprendre davantage.

  12. #12
    Membre à l'essai
    Avatar de shana59
    Femme Profil pro
    Lycéen
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 17
    Points
    17
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Daïmanu Voir le message
    Je pense que c'était évident, en tout cas quand on a l'habitude des algorithmes de tri.

    Tu cherches probablement à implémenter le tri à bulles, qui est le plus simple à comprendre.
    Tu peux voir sur cette page le principe et le fait que l'implémentation est légèrement différente.
    Merci je pense faire une bouclf dans une autre pour faire en sorte que le tableau soit parcouru autant de fois que sa taille
    Edit:
    J'essaie plus tard dans l'après midi et je vous partage mon code si il fonctionne ou pas :')

  13. #13
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 192
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 192
    Points : 17 154
    Points
    17 154
    Par défaut
    Sinon, tu peux aussi utiliser directement qsort. C'est une fonction standard du C, donc déjà testée et éprouvée.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  14. #14
    Membre à l'essai
    Avatar de shana59
    Femme Profil pro
    Lycéen
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 17
    Points
    17
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par leternel Voir le message
    Sinon, tu peux aussi utiliser directement qsort. C'est une fonction standard du C, donc déjà testée et éprouvée.
    Certe mais pourquoi choisir la facilité quand on peut faire compliqué ? Se que je veux dire par la c'est que si je renonce a créé se qui devrait être une simple fonction qu'en sera t'il quand je vais develloper ma futur appli multi-thread ? Je préfère galèrer maintenant et pas bloquer quand je travaillerai sur mon projet

  15. #15
    Membre émérite
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Points : 2 601
    Points
    2 601
    Par défaut
    Citation Envoyé par shana59 Voir le message
    Re bonsoir ,
    Cherchant une maitrise du langage C je m'entraine au fur & à mesure du tutoriel et la je suis confronté à un Soucis enfin aulieu de m'expliquer je pense que c'est plus compréhensible en voyant le code directement
    Ma Fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    void ordonnerTableau(int tableau[], int tailleTableau)
    {
        int i=0;
        int inter=0;
        for (i=0;i<tailleTableau;i++)
        {
            if (i>0)
            {
               if(tableau[i-1]>tableau[i])
                {
                    inter=tableau[i];
                    tableau[i]=tableau[i-1];
                    tableau[i-1]=inter;
                }
     
            }
     
        }
    }
    Le Tableau envoyé à la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     tableau[0]=16;
        tableau[1]=48;
        tableau[2]=10;
        tableau[3]=50;
    & j'obtient :
    16
    10
    48
    50

    Quelqu'un pourrais m'expliquer pourquoi il ne traite pas le premier élément de mon tableau?
    Ta fonction n'est pas une fonction de tri : tu as un problème d'algorithme ici. C'est juste ton jeu de données qui est mal foutu et qui te fait croire que seul le premier n'est pas traité. Ce que ta fonction fait est : mettre la plus grande valeur contenue dans le tableau à la fin du tableau.

  16. #16
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Citation Envoyé par shana59 Voir le message
    Certe mais pourquoi choisir la facilité quand on peut faire compliqué ? Se que je veux dire par la c'est que si je renonce a créé se qui devrait être une simple fonction qu'en sera t'il quand je vais develloper ma futur appli multi-thread ? Je préfère galèrer maintenant et pas bloquer quand je travaillerai sur mon projet
    Bonne attitude ! Mais prends garde de ne pas réinventer la roue en te renseignant auparavant sur le problème que tu considères et les manières d'y répondre. Il est très probable que de nombreuses personnes qualifiées y aient déjà longuement réfléchi.

    En l'occurrence, étudie quelques algorithmes de tri académiques, comprends-les bien puis essaie de les implémenter en C.

  17. #17
    Membre à l'essai
    Avatar de shana59
    Femme Profil pro
    Lycéen
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 17
    Points
    17
    Billets dans le blog
    1
    Par défaut
    Qu'en pensez vous?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    void ordonnerTableau(int tableau[], int tailleTableau)
    {
        int i=0;
        int y=0;
        int inter=0;
        for(y=0;y<tailleTableau;y++)
        {
             for (i=1;i<tailleTableau;i++)
        {
     
               if(tableau[i-1]>tableau[i])
                {
                    inter=tableau[i];
                    tableau[i]=tableau[i-1];
                    tableau[i-1]=inter;
                }
     
     
     
        }
        }
     
    }

Discussions similaires

  1. fonction et tableau
    Par abdou karim diagne dans le forum C
    Réponses: 5
    Dernier message: 26/03/2007, 02h05
  2. [VBA-E]paramètre fonction et tableau
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/01/2007, 09h56
  3. [Tableaux] fonction et tableau
    Par vacknov dans le forum Langage
    Réponses: 7
    Dernier message: 23/06/2006, 15h47
  4. Fonctions SQL - Tableau et type anyarray
    Par etiennegaloup dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 07/11/2005, 12h25
  5. PB fonction et Tableau
    Par T-B dans le forum Langage
    Réponses: 5
    Dernier message: 23/10/2005, 15h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo