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 :

Tri d'un tableau de float


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 107
    Points : 41
    Points
    41
    Par défaut Tri d'un tableau de float
    Bonjour

    Je voudrait creer un tableau de float et sorti les 5plus grand élément du tableau. Existe-il en QT (ou a defaut en c++) une fonction qui fasse cela

    Merci d'avance
    Jeane

  2. #2
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Points : 74
    Points
    74
    Par défaut
    STL fournit une fonction sort... Et il y a aussi la fonction qsort en C.

  3. #3
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    Je confirme, la fonction std::sort() est ton ami, surtout sur des float tu n'as rien à faire ou presque :
    std::sort( Tableau, Tableau+TAILLE_DU_TABLEAU);
    et hop, ton tableau est trié !

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 107
    Points : 41
    Points
    41
    Par défaut
    ce bout de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    float *tab=new float[5];
    for (int i=0;i<5;i++)
     
    {
    tab[i]=10-i;
    } 
    std::sort(tab,5);
    ne marche pas !!!
    PS: il n'existe pas de fonction QT qui fasse celà?
    encore merci

  5. #5
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    je crois qu'il y a incompréhension entre tut et touco : STL et SDL sont deux choses différentes...

    la STL est la librairie standard C++
    tandis que la SDL est une librairie C tierce...

    pour ton problème, essaie de voir avec les vector de la STL, et les fonctions de tri associées (FAQ C++ et tutos C++ du site )

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    qsort est à proscrire, il faut utiliser std::sort en C++ - plus rapide -. En même temps, on peut aussi utiliser QVector pour stocker des flottants.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 107
    Points : 41
    Points
    41
    Par défaut
    Merci le type QVector est celui que je cherchait.
    Cependant je ne trouve pas de fonction de QVector qui tri le vecteur ou eventuellement qui donne les n plus petit élément du tableau.

    Cette fonction existe-elle?

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Tu peux utiliser std::partial_sort si tu ne veux pas tout trier. Tu peux même l'utiliser sur ton QVector s'il exporte une paire d'itérateurs.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 107
    Points : 41
    Points
    41
    Par défaut
    euh c'est à dire??
    je suis désolé mais je débute en QT alors je suis pas très à l'aise!!

    encore merci

  10. #10
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    C'est-à-dire que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    QVector<float> Tab;
     
    ...
     
    std::partial_sort(Tab.begin(), Tab.begin() + 5, Tab.end(), std::greater<float>());
    Devrait te mettre dans les 5 premiers éléments de Tab les 5 plus grands flottants de ton tableau.

  11. #11
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 753
    Points : 10 704
    Points
    10 704
    Billets dans le blog
    3
    Par défaut
    Fait un petit test avant quand même. Personnellement, pour mon utilisation (petits tableaux), partial_sort était plus lent que sort (??).

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 107
    Points : 41
    Points
    41
    Par défaut
    Alors déjà j'ai un probleme avec la classe qvector

    j'ecris:
    QVector<float> v;
    v.append(5.2);
    v.append(1.9);

    pour remplir mon vecteur

    (j'ai fait un #include<qvector.h> )
    voilà ce que le compilo me dit:
    main.cpp:36: erreur: ‘class QPtrVector<float>’ has no member named ‘append’

    idem il ne reconnait pas de v.begin()...

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 107
    Points : 41
    Points
    41
    Par défaut
    Remarque:
    même si j'essaie d'utiliser la stl avec
    : stl::vector<int< v;

    le compilo dit que vector n'est pas une classe de la stl ....

  14. #14
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    le namespace de la stl n'est pas stl mais std...
    et pour les vector de la STL, c'est pas append, mais push_back

  15. #15
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    C'est std::vector, pas stl::vector !!
    QVector a un membre append : http://qt.developpez.com/doc/4.1/qvector/
    Pour trier, l'appel à sort est aussi préconisé.

  16. #16
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Au fait, c'est quelle version de Qt ?

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 107
    Points : 41
    Points
    41
    Par défaut
    Désolé j'avais bien ecrir std::vector mais la réponse est :
    main.cpp:35: erreur: ‘vector’ is not a member of ‘std’

    Qand à la classe QVector c'est justement à l'adresse indiqué que j'ai trouver que la fonction append me permettait d'ajouter des élément mais apparemment mon compilo n'est pas d'accord...voici ces idre:
    main.cpp:37: erreur: ‘class QPtrVector<float>’ has no member named ‘append’

    d'ailleurs je ne comprend pas pourquoi il dit que c'est un QPtrVector alors que je le déclare en QVector

    Bizzar non?

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 107
    Points : 41
    Points
    41
    Par défaut
    ma version de qt:
    Qmake version: 1.07a (Qt 3.3.4)

  19. #19
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    pour std::vector, il faut que tu penses à mettre un

  20. #20
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par Jeane
    Désolé j'avais bien ecrir std::vector mais la réponse est :
    main.cpp:35: erreur: ‘vector’ is not a member of ‘std’

    Qand à la classe QVector c'est justement à l'adresse indiqué que j'ai trouver que la fonction append me permettait d'ajouter des élément mais apparemment mon compilo n'est pas d'accord...voici ces idre:
    main.cpp:37: erreur: ‘class QPtrVector<float>’ has no member named ‘append’

    d'ailleurs je ne comprend pas pourquoi il dit que c'est un QPtrVector alors que je le déclare en QVector

    Bizzar non?
    A mon avis, tu n'as pas inclus les headers...

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/09/2005, 10h30
  2. tri d'un tableau à 2 dimensions
    Par dede92 dans le forum C
    Réponses: 4
    Dernier message: 19/02/2005, 18h29
  3. Tableau de float
    Par El Saigneur dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/02/2005, 11h47
  4. [langage] Probleme de tri d'un tableau de tableau
    Par Ludo167 dans le forum Langage
    Réponses: 1
    Dernier message: 25/08/2004, 10h32
  5. [] Tri d'un tableau par ordre alphabétique
    Par cafeine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/09/2002, 08h43

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