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 confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 107
    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 éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    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 éclairé
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    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 confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 107
    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 confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    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 )
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  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 : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    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 confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 107
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    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 confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 107
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    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 confirmé

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

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    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 confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 107
    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 confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 107
    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 confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    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
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  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 : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    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 : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

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

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 107
    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 confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : Canada

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

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    pour std::vector, il faut que tu penses à mettre un
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  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 : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    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