Affichage des résultats d'une comparaison
Bonjour tout le monde.
Voilà, j'ai un petit souci dans mon code.
Je vous explique.
Mon programme est un comparateur de fichiers; il compare deux fichiers (un fichier2 par rapport à un fichier1) passés en paramètres puis écrit les lignes du fichier2 qui ne sont pas présentes dans le fichier1 dans un fichier .txt sur le bureau.
Ces lignes sont en fait découpées en colonnes qui sont séparées par des points virgules. Donc en fait, ce sont chaque colonne du fichier1 que l'on compare à celles du fichier2.
Mon problème est donc le suivant: du coup on me demande d'écrire dans mon fichier .txt les colonnes du fichier2 qui ne sont pas dans le fichier1 et d'ecrire juste en dessous, la colonne du fichier1 auquel correspond la différence.
En gros ca donne ca:
COLONNE_DU_FICHIER2_DIFFERENTE_DE_CELLE_DU_FICHIER_1
COLONNE_DU_FICHIER1_A_LAQUELLE_A_ETE_COMPAREE_LA_COLONNE_DU_FICHIER2
et etc...
Voici une partie de mon code (juste la fonction dans laquelle je pense qu'il y a une erreur).
Si besoin de tout mon code n'hésitez pas à me le dire :)
Je continu de chercher en attendant :)
Kira
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
int compare2(vector < structure > Tab1, vector < structure > Tab2, ofstream &fichier2)
{
compteur = 0;
num_ligne = 0;
vector < structure >::iterator itCurrent1; // Création d'un vector de type "Colonne_struct" qui est un iterator de nom "itCurrent1".
vector < structure >::iterator itEnd1 = Tab1.end( ); // Création d'un vector de type "Colonne_struct" qui est un iterator de nom "itEnd1" initialisé à la fin d'un tableau.
vector < structure >::iterator itCurrent2; // Idem
vector < structure >::iterator itEnd2 = Tab2.end( ); // Idem
cout << endl;
itCurrent1 = Tab1.begin( );
for ( ; itCurrent1 != itEnd1; ++itCurrent1) // Deux boucles for imbriquées permettent la comparaison;
{ // On compare chaque ligne du tableau1 à l'ensemble des
bool trouve = 0; // lignes du tableau2.
num_ligne = num_ligne++;
// Pour une ligne du tableau1, on parcour l'ensemble du tableau2
itCurrent2 = Tab2.begin( ); // Si la ligne est trouvée, on place "trouve" à true et on sort
for ( ; itCurrent2 != itEnd2; ++itCurrent2) // de la seconde boucle for.
{
// Si la ligne n'est pas trouvée, "trouve" est à "false", on incrémente un compteur
//if ( *itCurrent2 == *itCurrent1 ) // (qui sera chargé de renseigner par la suite le nombre de lignes absentes)
//{ // et on affiche la ligne qui ne se trouve pas dans le tableau2.
// trouve = true; // Enfin, lorsque la comparaison est finie, on renvoi la valeur du compteur.
// break;
//}
for(int i = 0; i < 8; ++i)
{
if (*itCurrent1 == *itCurrent2 && itCurrent1->col [i] == itCurrent2->col [i])
{
trouve = true;
break;
}
if(trouve == false)
{
ofstream fichier2( "C:\\Documents and Settings\\bastien\\Bureau\\Fichier log1.txt", ios::out | ios::app );
if(fichier2.is_open() == false)
{
cout << "ERREUR LORS DE L'OUVERTURE DE Fichier log1.txt" << endl;
assert(false);
return -1;
}
compteur = compteur++;
//cout << *itCurrent1;
fichier2 << "(Fichier 2)" << "\t" << itCurrent1->col[i] << " " << num_ligne ; //JE PENSE QUE MON ERREUR SE SITUE ICI
}
}
}
}
return compteur;
} |