Menu

Trie Alphabetique [c c++] [Résolu/Fermé]

James56 146 Messages postés lundi 24 septembre 2007Date d'inscription 19 janvier 2017 Dernière intervention - 9 oct. 2007 à 01:22 - Dernière réponse :  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 ?
Afficher la suite 

12 réponses

mamiemando 28360 Messages postés jeudi 12 mai 2005Date d'inscriptionContributeurStatut 23 mai 2018 Dernière intervention - 18 oct. 2007 à 19:50
+4
Utile
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
Cette réponse vous a-t-elle aidé ?  
killeur 112 Messages postés dimanche 7 octobre 2007Date d'inscription 14 mars 2008 Dernière intervention - 9 oct. 2007 à 02:18
+2
Utile
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
James56 146 Messages postés lundi 24 septembre 2007Date d'inscription 19 janvier 2017 Dernière intervention - 9 oct. 2007 à 02:19
+2
Utile
j'ai bien chercher mais j'ai pas trouver alors je vien ici car cest mon dernier espoir.
merci qunad meme.
killeur 112 Messages postés dimanche 7 octobre 2007Date d'inscription 14 mars 2008 Dernière intervention - 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
James56 146 Messages postés lundi 24 septembre 2007Date d'inscription 19 janvier 2017 Dernière intervention - 9 oct. 2007 à 02:27
+2
Utile
a oui ce serait cool.
merci
killeur 112 Messages postés dimanche 7 octobre 2007Date d'inscription 14 mars 2008 Dernière intervention - 9 oct. 2007 à 02:37
+2
Utile
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
James56 146 Messages postés lundi 24 septembre 2007Date d'inscription 19 janvier 2017 Dernière intervention - 9 oct. 2007 à 02:37
+2
Utile
ok
James56 146 Messages postés lundi 24 septembre 2007Date d'inscription 19 janvier 2017 Dernière intervention - 20 oct. 2007 à 00:57
+2
Utile
merci beaucoup
James56 146 Messages postés lundi 24 septembre 2007Date d'inscription 19 janvier 2017 Dernière intervention - 11 oct. 2007 à 23:46
+1
Utile
up
killeur 112 Messages postés dimanche 7 octobre 2007Date d'inscription 14 mars 2008 Dernière intervention - 12 oct. 2007 à 11:58
mer**** j'ai caremment oublié, désolé, je vais voir ça ce WE
James56 146 Messages postés lundi 24 septembre 2007Date d'inscription 19 janvier 2017 Dernière intervention - 18 oct. 2007 à 17:40
+1
Utile
up