Réponse acceptée !
Plusieurs remarques:
- Évite les conio.h si tu n'en as pas besoin tu perds en portabilité pour rien.
- Pas besoin d'include spécifique au C (tous les trucs en .h), en C++.
- <string> est déjà dans <iostream>.
- <iostream.h> est à proscrire ! Utilise toujours <iostream>
- En C++ une classe et une structure, c'est la même chose ! Donc pas besoin de réecrire "struct" partout. De plus, tu peux faire un new, plutôt qu'un malloc.
- Évite les variables globales.
- Évite NULL, préfère 0, voir:
[ Lien ]
Ton problème était que tu ne repartais pas du début de la liste d'exclusion quand tu cherchais ce qu'il fallait éliminer. J'ai donc ajouter un "head = debut" pour sauvegarder la tête de la liste, puis je remet cette liste au début à chaque tour de vérification (debut = head).
A noter que je n'ai pas corrigé les erreurs de fuites de mémoires (rien n'est libéré !). Pense à faire une procédure de libération (avec le mot clé delete).
Code C/C++ :
#include <iostream>
#include <fstream>
using std::ifstream;
using std::ofstream;
using std::string;
struct Page
{
string val;
Page* suivant;
};
// créer une liste de mots à partir d'un fichier texte
Page* creerliste()
{
ifstream entree ("in1.txt");
string i;
Page* premier;
Page* precedent;
Page* nouveau;
premier = new Page;
entree >> premier->val;
precedent = premier;
while (entree >> i)
{
nouveau = new Page;
precedent->suivant = nouveau;
precedent = nouveau;
nouveau->val = i;
}
precedent->suivant = 0;
return premier;
}
void compare(Page* debut)
{
int i = 0;
ifstream ifs("in.txt") ;
ofstream ofs("out.txt");
string s;
Page* head = debut;
while (ifs >> s)
{
debut = head;
while (debut != 0)
{
if (s == debut->val)
{
i = 1;
break;
}
debut = debut->suivant;
}
if (i == 1)
ofs << ""; //ne pas réécrire le mot dans le nouveau fichier
else
ofs << s << " "; //réécrire le mot dans le nouveau fichier
i = 0;
}
}
int main()
{
Page* premier = creerliste();
compare(premier);
return 0;
}
_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio