Trie Alphabetique [c c++]

Résolu
James56 Messages postés 161 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonjour,
j'ai besoin d'aide concernan un notion que je ne connait pas : le trie alphabetique :

en fait j'ai un fichier.txt qui posede plusieur ligne (une centaine) sur chaque ligne il y a un prenom et je voudrai les trier par ordre alphabetique.

je ne sais pas du tout comment mi prendre.

quelqun peu m'aider ?
A voir également:

10 réponses

mamiemando Messages postés 33766 Date d'inscription   Statut Modérateur Dernière intervention   7 878
 
Il faut utiliser qsort après avoir défini une relation d'ordre (ici l'ordre alphabétique).
Exemple : http://www.idris.fr/data/cours/lang/c/c_tp/exo16.c
En C cette relation d'ordre s'appelle strcmp, il est inutile de la recoder

En C++ c'est encore plus facile car c'est l'opérateur < sur les std::string. Le container std::set permet d'ordonner des objets (par défaut avec <, sinon avec une autre relation d'ordre définie dans un foncteur).

Je te donne la version C++ comme ça ce sera pour toi l'occasion de (re)voir un peu comment la STL marche (ifstream, set, string, iterator...) :
#include <iostream>
#include <fstream>
#include <set>

int main(){
    const char *filename = "plop.txt";
    // Ici je ne précise pas de relation d'ordre ce sera
    // donc l'opérateur < qui sera utilisé
    std::set<std::string> names;

    // Lire le fichier
    {
        std::string line;
        std::ifstream ifs(filename);
        if(!ifs){
            std::cerr << "can't open [" << filename << ']' << std::endl;
            return EXIT_FAILURE;
        }
        while(std::getline(ifs,line)){
            names.insert(line);
        }
        ifs.close();
    }

    // Ecrire les éléments de "names". Ils sont déjà triés
    // comme je veux, ie avec l'opérateur < de la classe
    // std::string. Il suffit donc de parcourir cet ensemble
    {
        std::set<std::string>::const_iterator
            names_it (names.begin()),
            names_end(names.end());
        for(;names_it != names_end;++names_it){
            const std::string & cur_name = *names_it;
            std::cout << cur_name << std::endl;
        }
    }
    return EXIT_SUCCESS;
}

Je prépare ensuite le fichier texte plop.txt :
(mando@aldur) (~) $ cat plop.txt
tintin
asterix
ali mentaire
ali baba
thorgal
lucky luke
Ensuite on compile et on exécute (ici sous linux) :
(mando@aldur) (~) $ g++ -W -Wall plop.cpp
(mando@aldur) (~) $ ./a.out
ali baba
ali mentaire
asterix
lucky luke
thorgal
tintin

Bonne chance
4
killeur Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   20
 
désolé ça fait un bon moment que je n'ai pas fait de C, utilise:"file *f" et puis"sort" ou "strcmp" je ne sais plus, je te laisse te débrouillé pour l'algorithme lol^^

regarde dans le site ya surement quelques trucs pour t'éclairer, ou regarde sur google, car c'est un exercice qu'on demande a tout les étudiants j'ai l'impression
2
James56 Messages postés 161 Date d'inscription   Statut Membre Dernière intervention   16
 
j'ai bien chercher mais j'ai pas trouver alors je vien ici car cest mon dernier espoir.
merci qunad meme.
2
killeur Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   20
 
si ce n'est pas dans l'immédiat je pourrai regarder dans mes anciens cours, j 'ai l'impression que je l'ai deja fait cet exo lol
0
James56 Messages postés 161 Date d'inscription   Statut Membre Dernière intervention   16
 
a oui ce serait cool.
merci
2

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
killeur Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   20
 
Ok je te tiens au courant demain avant une heure du mat,

si tu as des précisions sur l'exercice, dis le maintenant, s'il ya des contraintes, des conditions etc
2
James56 Messages postés 161 Date d'inscription   Statut Membre Dernière intervention   16
 
ok
2
James56 Messages postés 161 Date d'inscription   Statut Membre Dernière intervention   16
 
merci beaucoup
2
Utilisateur anonyme
 
merci bcp
2
James56 Messages postés 161 Date d'inscription   Statut Membre Dernière intervention   16
 
up
1
killeur Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   20
 
mer**** j'ai caremment oublié, désolé, je vais voir ça ce WE
0
James56 Messages postés 161 Date d'inscription   Statut Membre Dernière intervention   16
 
up
1