> Tous les forumsAutres langages

 [C] Parcours fichier CSVSujet résolu
Statut du sujet : RESOLU Imprimer
 Premium
  Posté le 28/05/2006 @ 23:21  
 Petit astucien

205 Messages
Bonjour, j'ai un fichier CSV de ce type : A,B A,C B,E B,D B,A ... je voudrais savoir comment faire pour récuperer dans un tableau ceci: A,B,C puis dans un autre B,E,D,A et ainsi de suite Merci par avance
 Afficher le profil de PremiumEnvoyer un message privé à Premium
 
 
Publicité
 Premium  Posté le 29/05/2006 à 08:03  
Petit astucien

205 Messages
Salut, en faite, je me suis trompé dans mes explications Avec cet arbre (les chiffres représentent des IPs) [code] 1 / \ 2 4 / | | 3 5 5 | | | 4 6 7 [/code] on obtient ce fichier CSV pour les voisins :
1,2 1,4 2,1 2,3 2,5 3,2 3,4 4,3 4,1 4,5 5,2 5,6 5,4 5,7 6,5 7,5
Pour reconstituer l'arbre, avec l'algo suivant:
Lire une ligne, extraire les adresses IP, les mettre dans un tableau Lire la ligne d'apres si la 1ere adresse IP = à la premiere adresse Ip de la ligne d'avant alors extraire la 2eme IP et la mettre dans le 2eme tableau. Sinon mettre la 1ere Ip de cette ligne ainsi que la 2eme dans le tableau. ...
Ça ne donnera pas l'arbre reconstituer...car ça donne une liste de voisin et le sommet de départ n'est pas la racine. Avec l'exemple, ça donnerai : 1-2-4 puis 2-1-3-5 .... J'ai une fonction "ArbreRemplir" qui remplit une branche complète de l'arbre à partir d'une liste d'IP terminée par "NULL" (avec la 1ère IP étant impérativement l'IP de mon propre host) Quelqu'un aurait une idée pour l'écriture en C de la fonction qui pourrait me donner l'arbre? Merci

Modifié par Premium le 29/05/2006 08:07
Afficher le profil de PremiumEnvoyer un message privé à Premium
 Revenir en haut de la page
 koala01  Posté le 30/05/2006 à 19:54  
Astucien

4715 Messages
Salut, En gros, surtout si la toute premiere ip est la tienne, il suffit de suivre un schéma classique en quatre temps:
  • Lecture de l'IP parent
  • recherche du noeud parent
  • lecture de l'ip enfant
  • ajout de l'ip enfant
Pour la facilité, je diviserais ces quatres étapes en autant de fonctions, de manière à s'y retrouver plus facilement plus tard… Il y aurait en fait: - une fonction de lecture (recevant un pointeur sur le fichier en argument et renvoyant l'ip lue), - une fonction de recherche du noeud (recevant en argument l'ip et renvoyant le noeud trouvé), -une fonction de création de noeud (recevant l'ip en argument et renvoyant un nouveau noeud) et -une fonction d'ajout de l'enfant (recevant le noeud parent et le noeud enfant en arguments) Le tout, harmonieusement mis en scène dans une petite boucle qui aurait, de plus un compteur (pour les vérifications) sous la forme de
noeud* parsing(char *filename) { //déclaration des variables char temp; int cpt=0; char ip[4]; noeud* parent; noeud *enfant; noeud *premier; FILE *fichier=fopen(filename,"rt"); //debut de la boucle while(! fichier.eof()) { ip=Lecture(fichier); //supprimons la virugle qui se trouve entre le parent et l'enfant temp=fgetc(fichier); //gérer la première lecture à part if(cpt==0) premier=Nouveau(ip); else { //pour tous les autres parent=cherche(ip); ip=Lecture(fichier); enfant=Nouveau(ip); AjouteEnfant(parent, enfant); } //n'oublions pas d'incrémenter le compteur cpt++; } //éventuellement un affichage du nombre de lignes lues printf("nombre de lignes lues:%d\n",cpt); //n'oublions pas de renvoyer le noeud racine return premier; }
Pour le reste, tout dépendra des structures que tu as décidé d'utiliser pour ton arbre , pour les ip et des vérifications [clindoeil] N'oublies pas (car je ne l'ai pas fait dans le code) de vérifiser systématiquement la réussite de l'allocation de tes pointeurs [clindoeil]
Afficher le profil de koala01 Voir la configuration de koala01Envoyer un message privé à koala01
  Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte



Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !
 

 > Tous les forumsAutres langages

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page