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 :

Mon Tri de Tableau


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    CoeurDeLion
    Inscrit en
    Août 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : CoeurDeLion

    Informations forums :
    Inscription : Août 2017
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Mon Tri de Tableau
    Bonjour
    Je reprend tout juste C après une pause de plusieurs années j'ai essayé d'écrire un Programme qui trie un Tableau de int, voila ce à quoi mon travail a aboutit pourriez us me donner vos avis s'il vous plaît ?

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    #include <stdlib.h>
    #include <stdio.h>
    int trier(int matrice[])
    {
        int size = sizeof(matrice)/sizeof(int);
        int sortie[size] = {0};
        int increment = 0;
        while !(empty(matrice))
        {
            int maximum = 0;
            for(int compteur = 0; compteur < size; compteur++)
            {
                if(matrice[compteur] > maximum)
                {
                    maximum = matrice[compteur];
                }
            }
            sortie[increment] = maximum;
            increment++;
     
        }
    }
     
    int empty(int matrice[])
    {
        int size = sizeof(matrice)/sizeof(int);
        for(int compteur = 0; compteur < size; compteur++)
        {
            if(matrice[compteur] != -)
                return 0;
        }
        return 1;
    }

  2. #2
    Membre régulier
    Homme Profil pro
    Autres
    Inscrit en
    Août 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Août 2008
    Messages : 39
    Points : 82
    Points
    82
    Par défaut
    Je ne sais pas ce que tu essais de faire, mais en l'etat tes fonctions ne servent à rien.

    Il aurait fallu que tu explicites ce que tu souhaitais faire, si c’était juste trier un tableau de int comme dans ton énoncé alors ton code est inutilement compliqué.

  3. #3
    Membre expérimenté Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 623
    Points : 1 554
    Points
    1 554
    Par défaut
    Hello,

    Ligne 5, sizeof(matrice)/sizeof(int) ne va pas donner la bonne valeur (enfin si, mais pas celle à laquelle tu penses). matrice, dans la fonction trier, est un pointeur, et donc size va prendre la valeur sizeof(int *)/sizeof(int)
    On écrit "J'ai tort" ; "tord" est la conjugaison du verbre "tordre" à la 3ème personne de l'indicatif présent

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par CoeurDeLion Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int empty(int matrice[])
    {
        int size = sizeof(matrice)/sizeof(int);
        for(int compteur = 0; compteur < size; compteur++)
        {
            if(matrice[compteur] != -)
                return 0;
        }
        return 1;
    }
    Déjà je ne pige pas le if matrice[compteur] != -. Serait-ce "-1" que tu cherches ?
    Admettons. Mais cela amène alors la réflexion que ton tableau d'int n'a pas le droit d'utiliser la valeur "-1" puisqu'elle te sert de flag. Ou alors tu ne gères que des positifs et là ça va mais tous ces éléments il serait utile que tu nous le dises au lieu de nous laisser les deviner.
    Accessoirement si "-1" sert de flag, tu as alors le droit de t'en servir pour déterminer la taille de ton tableau au lieu de ce sizeof(matrice)/sizeof(int) qui, comme le dit edgarjacobs, ne peut pas fonctionner.

    Et pour finir, contrairement à ce que son nom laisse croire, cette fonction ne vérifie pas que ton tableau est vide mais juste s'il contient "-1" quelque part (ce qui n'est pas du tout la même chose !!!)

    Citation Envoyé par CoeurDeLion Voir le message
    j'ai essayé d'écrire un Programme qui trie un Tableau de int,
    Oui mais qui trie comment ? sur place ? dans un second tableau ? ça aussi il faut le dire !!!

    Citation Envoyé par CoeurDeLion Voir le message
    Code c : 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
    int trier(int matrice[])
    {
        int size = sizeof(matrice)/sizeof(int);
        int sortie[size] = {0};
        int increment = 0;
        while !(empty(matrice))
        {
            int maximum = 0;
            for(int compteur = 0; compteur < size; compteur++)
            {
                if(matrice[compteur] > maximum)
                {
                    maximum = matrice[compteur];
                }
            }
            sortie[increment] = maximum;
            increment++;
     
        }
    }
    Cette fonction trie que dalle. Elle se contente de récupérer n fois le maximum de ton tableau pour le stocker n fois dans "sortie". Et étant donné que "matrice" n'est jamais modifié, le while !(empty(matrice)) (avec là aussi une super erreur de syntaxe) c'est boucle infinie.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Problème dans un tri de tableau
    Par pmboutteau dans le forum ASP
    Réponses: 5
    Dernier message: 29/11/2005, 13h12
  2. [Tableaux] tri de tableau
    Par rdams dans le forum Langage
    Réponses: 19
    Dernier message: 08/11/2005, 13h46
  3. Perdu dans mon tri...
    Par progfou dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 10/10/2005, 21h38
  4. [PERL] problème tri de tableau
    Par LE NEINDRE dans le forum Langage
    Réponses: 2
    Dernier message: 31/08/2005, 15h42
  5. [langage] tri dans tableau de hachage
    Par mimilou dans le forum Langage
    Réponses: 2
    Dernier message: 10/03/2004, 16h10

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