Trie Alphabetique [c c++]

Résolu/Fermé
James56 Messages postés 161 Date d'inscription lundi 24 septembre 2007 Statut Membre Dernière intervention 1 avril 2022 - 9 oct. 2007 à 01:22
 Utilisateur anonyme - 2 janv. 2009 à 14:47
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 33333 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 31 octobre 2024 7 800
18 oct. 2007 à 19:50
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 dimanche 7 octobre 2007 Statut Membre Dernière intervention 14 mars 2008 20
9 oct. 2007 à 02:18
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 lundi 24 septembre 2007 Statut Membre Dernière intervention 1 avril 2022 16
9 oct. 2007 à 02:19
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 dimanche 7 octobre 2007 Statut Membre Dernière intervention 14 mars 2008 20
9 oct. 2007 à 02:26
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 lundi 24 septembre 2007 Statut Membre Dernière intervention 1 avril 2022 16
9 oct. 2007 à 02:27
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 dimanche 7 octobre 2007 Statut Membre Dernière intervention 14 mars 2008 20
9 oct. 2007 à 02:37
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 lundi 24 septembre 2007 Statut Membre Dernière intervention 1 avril 2022 16
9 oct. 2007 à 02:37
ok
2
James56 Messages postés 161 Date d'inscription lundi 24 septembre 2007 Statut Membre Dernière intervention 1 avril 2022 16
20 oct. 2007 à 00:57
merci beaucoup
2
Utilisateur anonyme
2 janv. 2009 à 14:47
merci bcp
2
James56 Messages postés 161 Date d'inscription lundi 24 septembre 2007 Statut Membre Dernière intervention 1 avril 2022 16
11 oct. 2007 à 23:46
up
1
killeur Messages postés 112 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 14 mars 2008 20
12 oct. 2007 à 11:58
mer**** j'ai caremment oublié, désolé, je vais voir ça ce WE
0
James56 Messages postés 161 Date d'inscription lundi 24 septembre 2007 Statut Membre Dernière intervention 1 avril 2022 16
18 oct. 2007 à 17:40
up
1