Retirer les doublons d'un document texte

akwell1 Messages postés 47 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 19 juin 2005 - 23 oct. 2004 à 00:22
 green mamba - 18 janv. 2009 à 11:30
salut a tous je dois faire un petit programme en c++ mais je suis pas tres douer:

j'ai un fichier texte sous la forme suivante:

203.125.118.17
217.215.120.3
203.126.140.67
213.115.128.94
210.126.140.27
207.126.125.16
69.1.32.175
217.215.120.3
69.1.32.25
217.215.120.3
203.127.221.98
...( +- 6500 lignes)

ce fichier texte contient de doublons(lignes répétées,non consécutives)

mon programme consiste a faire un autre document texte sans les doublons

ca n'a pas l'ai compliqué mais je sais pas du tout comme m'y prendre...

merci

54 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
23 oct. 2004 à 00:40
T'as deja posé la question ya pas longtemps, et c'est résolu
0
akwell1 Messages postés 47 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 19 juin 2005
23 oct. 2004 à 12:21
ah bon???

et ou ca??
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
23 oct. 2004 à 12:44
Oh désolé c'était pas toi, mais une question similaire est présente peu avant:
http://www.cppfrance.com/forum.v2.aspx?ID=318226&nb=6
0
akwell1 Messages postés 47 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 19 juin 2005
23 oct. 2004 à 14:45
ca m'aide pas vraiment car je sais meme pas comment il faut lire le document

ps si ca tien en 10 ligne(dit dans l'autre post)

pk pas nous les donner?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
23 oct. 2004 à 18:14
ca trie toto.txt et supprime les doublons, resultat sur stdout

apres tu mets ca en forme comme tu veux

#include
#include
#include <fstream>
#include <string>
#include <vector>

using namespace std;

int main()
{
ifstream file( "toto.txt" );

string line;
vector< string > lines;
while( getline( file, line ) )
lines.push_back( line );

sort( lines.begin(), lines.end() );

for( vector< string >::iterator i = lines.begin() + 1; i < lines.end(); ++i )
if( *i == *(i - 1) )
i = lines.erase( i ) - 1;

for( vector< string >::size_type i = 1; i < lines.size(); ++i )
cout << lines[i] << '\n';
}
0
akwell1 Messages postés 47 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 19 juin 2005
23 oct. 2004 à 19:26
merci mais j'ai les erreurs suivantes quand je veux compiler

--------------------Configuration: Cpp1 - Win32 Debug--------------------
Compiling...
Cpp1.cpp
C:\Documents and Settings\akwell\Mes documents\c++\tri ip\Cpp1.cpp(24) : error C2040: 'i' : 'unsigned int' differs in levels of indirection from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *'
C:\Documents and Settings\akwell\Mes documents\c++\tri ip\Cpp1.cpp(24) : error C2446: '<' : no conversion from 'unsigned int' to 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
C:\Documents and Settings\akwell\Mes documents\c++\tri ip\Cpp1.cpp(24) : error C2040: '<' : 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *' differs in levels of indirection from 'unsigned int'
C:\Documents and Settings\akwell\Mes documents\c++\tri ip\Cpp1.cpp(26) : warning C4508: 'main' : function should return a value; 'void' return type assumed
Error executing cl.exe.
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
23 oct. 2004 à 19:31
j'imagine que tu es sous vc++ 6 ?

prends un vrai compilo, devcpp est gratuit
0
akwell1 Messages postés 47 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 19 juin 2005
23 oct. 2004 à 19:32
ok
je prends
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
23 oct. 2004 à 19:48
dev cpp n'est pas un compilo, donc pas non plus un vrai compilo. Sous windows, préfère quand même le compilateur de Visual C++ qui est gratuit.
En fait VC++ ne respecte pas les règles de portée du for, les variables déclarées dedans (ici i) restent déclarées après, donc pour le deuxieme for, utilise un autre identificateur (l'option /Zc:forScope permet de régler ce probleme)
En tous cas je compile très bien l'exemple de djl avec VC++ 7.1
0
akwell1 Messages postés 47 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 19 juin 2005
23 oct. 2004 à 19:48
j'ai quand meme une erreur...

2 C:\Documents and Settings\akwell\Mes documents\c++\tri ip\2 unable to run program file.

Compiler: Default compiler
Executing g++.exe...
g++.exe "C:\Documents and Settings\akwell\Mes documents\c++\tri ip\Untitled1.cpp" -o "C:\Documents and Settings\akwell\Mes documents\c++\tri ip\Untitled1.exe" -I"C:\Dev-Cpp\include\c++\3.3.1" -I"C:\Dev-Cpp\include\c++\3.3.1\mingw32" -I"C:\Dev-Cpp\include\c++\3.3.1\backward" -I"C:\Dev-Cpp\lib\gcc-lib\mingw32\3.3.1\include" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib"
Execution terminated
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
23 oct. 2004 à 19:52
pas d'erreur donc l'executable est bien produit
0
akwell1 Messages postés 47 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 19 juin 2005
23 oct. 2004 à 20:01
les gars je suis debutant donc si vous pouviez etre plus explicite ca serait sympa
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
23 oct. 2004 à 20:04
je sais pas,

regardes si

C:\Documents and Settings\akwell\Mes documents\c++\tri ip\Untitled1.exe

à été généré
0
akwell1 Messages postés 47 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 19 juin 2005
23 oct. 2004 à 20:16
non
0
plus_plus_fab Messages postés 232 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 8 janvier 2005
23 oct. 2004 à 20:17
Je ne vois pas d'erreurs la dedans, c'est la commande de compilation.
Execution terminated ? peut tu lire la sortie standard ?

Sinon, quelques corrections minimes sur le code de djl :(ça ne devait pas compiler sinon)

#include
#include
#include <fstream>
#include <string>
//#include <vector>
#include <list>

using namespace std;

int main()
{
ifstream file( "toto.txt" );

string line;
list< string > lines;
while( getline( file, line ) )
lines.push_back( line );

//sort( lines.begin(), lines.end() ); //correct cependant
lines.sort() //spécifique à list

//for( list< string >::iterator i = lines.begin() + 1; i < lines.end(); ++i )
//if( *i == *(i - 1) )
//i = lines.erase( i ) - 1;
lines.unique();

for( list< string >::const_iterator cit = lines.begin(); cit != lines.end(); ++cit )
cout << *cit << endl;

return 0;
}

lines.erase(i) n'est pas faisable avec vector, il me semble ... ça aurait fait une erreur à la compil normalement.
0
akwell1 Messages postés 47 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 19 juin 2005
23 oct. 2004 à 20:23
j'ai bien une erreur a la ligne lines.unique();
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
23 oct. 2004 à 20:26
si plus_plus_fab, la stl a évolué, il n'y a rien d'incorrect dans ma version vector, ca compile sous g++ 3.2

avec le erase, faut juste faire gaffe a metre a jour l'iterateur
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
23 oct. 2004 à 20:27
Moi je n'ai aucun probleme, que ce soit avec gcc ou avec vc++

C:\MinGW\bin\g++.exe doublon.cpp
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
23 oct. 2004 à 20:28
mais ta version avec list me plait mieux, c'est encore plus cour

apres faut voir ce que ca donne niveau perf
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
23 oct. 2004 à 20:31
de toute facon la stl est tellement riche qu'il y a plusieurs facons de faire, j'avais deja commencer avec un remove_if...
0
Rejoignez-nous