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 :

Orde croissant


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 33
    Par défaut Orde croissant
    Bonjour j'ai des variables (environ 26) (type int) à mettre ordre croissant.
    Exemple :
    int a=5, b=10, c=4;
    je veux les mettre en ordre croissant automatiquement.
    Ensuite atribier un nombre en fonctions de leur place dans l'orde croissent la premieré variable sera a 1 et les suivente a 2,3,4 etc

    Merci leo

  2. #2
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Si tu veux garder des variables séparées, il faut que tu créés un tableau de pointeur de int, que tu places tous les pointeurs dans le tableau que tu utilises un algo de tri, et qu'ensuite tu accèdes au tableau pour remplir tes variables.

    Si tu expliques un peu plus tes intentions, nous serions plus à même de t'aider.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 150
    Par défaut
    Ti-R, toujours, le meme a raison, il est vraiment formidable ce Ti-R, si en plus il arrivait avant 11h au boulot Enfin,

    Le mieux encore, vu qu'on est dans un forum C++, c'est de creer un vecor<int>.

    Si non, un tableau de int, enfin, je ne pense pas que l'utilisation de pointeurs soit necessaire dans ce cas la.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 63
    Par défaut
    Comme le dit mtopoloff, le mieux en C++ c'est un std::vector<int>

    Et pour le trier il suffit d'utiliser std::sort(). Un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    std::vector<int> monTab;
    // On remplit le tableau
     
    std::sort(monTab.begin(), monTab.end());
    std::sort() est surchargé avec 3 arguments, le 3ème c'est le critère de comparaison. La doc sur std::sort : http://www.sgi.com/tech/stl/sort.html

    Si tu dois faire un algo de tri, regarde du côté du tri rapide.

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 36
    Par défaut
    sinon suivant le contexte tu peux utiliser un conteur trier a l'insertion comme un set

    les pointeurs avec des int .... hum ... bof

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 33
    Par défaut
    Citation Envoyé par Ti-R
    Si tu expliques un peu plus tes intentions, nous serions plus à même de t'aider.
    Voila mes intention :
    j'ecrit un texte enfin une suite de lettre et j'ai mis en place des compteur donc a chaque foi qu'il trouve une lettre a il met +1 dans la variable a ( et comme ca pour les autre lettre) maintenant je veux un tri croissant d'utilisationset en faite si il y a le plus de lettre a aura le plus grand nombre et si y est juste aprés je veux la mettre a la suitre de a pour ensuite pouvoir atrubuer 1 a la valeur la plus grand 2 a la suivent et insi de suite

  7. #7
    Membre confirmé Avatar de hamster
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 137
    Par défaut
    tu crées une classe Lettre qui contient deux membres : la lettre et son nombre d'apparitions

    Ensuite tu crées un tableau Lettre T[26]

    pour modifier le nombre d'apparition d'une lettre : T[i].nb++

    ensuite tu tries ton tableau

    pour ensuite pouvoir atrubuer 1 a la valeur la plus grand 2 a la suivent et insi de suite
    ça c'est l'indice de la lettre dans le tableau

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 33
    Par défaut
    ouimais je voudrait que le tri soi automatiquement fait par l'ordi
    tu peut me montre le code entie que tu ferait svp
    merci

  9. #9
    Membre confirmé Avatar de hamster
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 137
    Par défaut
    je n'ai pas le temps, je quitte le boulot, bonne soirée !

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 63
    Par défaut
    Je vais compléter ce qu'à dit hamster.

    Une fois que t'as créé ta classe Lettre, tu crées un std::vector<Lettre> monTab

    Ensuite tu fais le foncteur qui va bien pour trier le vector. Si tu ne sais pas ce qu'est un foncteur, regarde la FAQ : http://c.developpez.com/faq/cpp/?page=STL#STL_functor

    Une fois que tu as rempli ton tableau, il suffit d'appeller:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::sort(monTab.begin(), monTab.end(), foncteur());
    Et tu as ton tableau trié.

  11. #11
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Le plus simple, mais c'est du C et ça ne marche qu'en ASCII, tu prends un tableau de 26 entiers, pour chaque lettre minuscule (conversions et tests à faire avant donc) tu incrémentes la case tab[lettre-'a']. Puis avec qsort (en C), ou toute autre fonction prédéfinie C++, tu tries.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 33
    Par défaut
    merci je vais etudier

  13. #13
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Je n'ai pas fait attention, tu perds l'ordre des lettres si tu tries le tableau ; il faut prendre un index qui te renvoie sur la table et tu tries l'index. Cette méthode te fait gagner un peu de temps à la saisie, c'est tout.
    [edit] Ou alors, reprends l'idée de hamster et tu fais Tab[lettre-'a'].nb++ et ensuite trie le tableau
    [/edit]
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  14. #14
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Rien n'assure que Tab[lettre-'a'] donne quoi que ce soit. Par exemple, 'b'-'a' peut tout à fait valoir 42. En pratique, ça merdera pour tout signe de ponctuation.

    Le plus simple en C++ serait probablement un truc du genre :


    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
    struct CompareBySecond
    {
    	typedef pair<char, int> Elem;
    	bool operator() (Elem const &e1, Elem const &e2) {return e1.second < e2.second;}
    };
     
    int main()
    {
      map<char, int> distribution
      char c;
      while (cin >> c)
      {
        distribution[c] ++;
      }
      vector<pair<char, int> distribTriee
        (distribution.begin(), distribution.end());
      sort(distribTriee.begin(), distribTriee.end(), CompareBySecond());
      for (int i=0 ; i< distribTriee.size() ; ++i)
      {
        cout << i->second << " ' " << i->first << "'" << endl;
      } 
    }
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  15. #15
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    J'avais précisé dans le premier post que ce n'était valable qu'en ASCII et qu'il fallait prendre ses précautions.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

Discussions similaires

  1. tri par orde croissant
    Par Thierry_28 dans le forum C++
    Réponses: 7
    Dernier message: 07/07/2015, 22h20
  2. Tri par ordre croissant
    Par KinF dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 13/12/2008, 20h19
  3. Trier un tableau par ordre croissant
    Par Halleck dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 01/11/2004, 00h04
  4. Fonction ord, mais où es tu ?
    Par Neilos dans le forum C++Builder
    Réponses: 6
    Dernier message: 30/12/2003, 21h56
  5. Ordonner ds l'ordre croissant de 2 champs confondus
    Par Coolbens dans le forum Langage SQL
    Réponses: 11
    Dernier message: 17/06/2003, 16h39

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