Demande aide pour projet de tri sur stdin

dentmane Messages postés 2 Date d'inscription samedi 13 novembre 2004 Statut Membre Dernière intervention 5 janvier 2005 - 4 janv. 2005 à 21:25
cs_Nashua Messages postés 48 Date d'inscription lundi 29 novembre 2004 Statut Membre Dernière intervention 16 mars 2005 - 5 janv. 2005 à 20:41
Bonjour,
Je suis débutante en C et je dois faire un projet mais j'ai un peu de mal à démarrer donc si vous avez des pistes à me proposer pour commence se serait très sympa. voilà le projet:
Il faut écrire un programme qui va gérer une liste de chaînes de caractères et les ranger correctement.


Le programme recoit sur stdin une chaîne de la forme "X chaîne" :
X représente la commande souhaitée
Chaîne la chaîne concernée par la commande


a chaîne >> ajoute une chaîne à la liste
A chaîne >> ajoute une chaîne si elle n’est pas déjà présente dans la liste
d chaîne >> détruit toutes les occurrences de la chaîne dans la liste
D chaîne >> détruit la première occurrence de la chaîne dans la liste
f chaîne >> si la chaîne est présente dans la liste affiche 1 sinon affiche 0


En fait, la clé du projet est que les différentes commandes doivent etre exécutées en un temps le plus faible possible(la rapidité est le critère majeur.


Merçi de votre aide. bisous!


az ;-)

4 réponses

meech Messages postés 209 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 14 août 2007
4 janv. 2005 à 22:17
Salut,

Quelques précisions s'il te plaît :
+ toutes ces actions doivent-elles être réalisées au sein d'un seul et unique programme ?
+ les chaînes ajoutées (ou retirées) doivent-elles être stockées dans un fichier ?
+ si j'ai bien compris la finalité est d'obtenir un programme exécutable dont l'utilisation serait de ce genre : commande [option] < chaine

En espérant t'aider...
0
cs_Nashua Messages postés 48 Date d'inscription lundi 29 novembre 2004 Statut Membre Dernière intervention 16 mars 2005
5 janv. 2005 à 06:53
Commence par faire une liste chainee ainsi que tous les utilitaires
adcell ( ajoute une cellule dans la liste) destroycell ( detruire une
cellule) et ainsi de suite.

Lorsque tu as fait tout cela traite l'interface qui peut etre comme l'exemple ci-dessous.



char line[30];

memset (line, 0, sizeof(line));

while ( fgets(line,sizeof (line) ,stdin) != EOF) {

/* verification de la syntaxe de la ligne saisie qui doit etre commande (a A d D f) argument */

switch ( line [0] ){

case 'a' :


adcell();


break;

case 'A':


adcell();


break;

case 'd':


destroycell();


break;

case 'D':


destroyfirstcell();


break;

case 'f':


testcell();


break;

default :

fprintf ( stdout,"Erreur de saisie la commande est inconnue %c",line[0]);

}

memset (line, 0, sizeof(line));

}
Attention ce n'est pas un vrai code mais un exemple!!!!


Yves
0
dentmane Messages postés 2 Date d'inscription samedi 13 novembre 2004 Statut Membre Dernière intervention 5 janvier 2005
5 janv. 2005 à 19:47
merçi a vous deux c gentil!
sinon meech pour te repondre toutes ces actions doivent etre faites dans un seul programme; il n'est pas précisé si les chaines ajoutées doivent etre enregistrées dans un fichier. En fait, c'est à nous de choisir la meilleure façon de les enregistrer pour que les différentes options soient éxécutées en un temps le plus bref possible(c'est le criètre principal de notation! :-( ) Et t'as bien compris la finalité du programme.
Penses tu Nashua que choisir la liste chainée soit la solution la plus rapide et la plus simple pour faire cela?

Merçi a vous!


az ;-)
0
cs_Nashua Messages postés 48 Date d'inscription lundi 29 novembre 2004 Statut Membre Dernière intervention 16 mars 2005
5 janv. 2005 à 20:41
Si la rapidite est un critere de notation et que, bien sur,
l'empreinte memoire nest pas a considerer : OUI la liste chainee est
hyper rapide.

Pour la simplicite ce n'est pas sur.

Tu vas t'amuser un peu a creer les fonctions de gestions de liste chainees. C'est un classique en Universite.


Yves
0
Rejoignez-nous