IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Affichage des résultats d'une comparaison


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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;
    }

  2. #2
    Membre confirmé Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Points : 633
    Points
    633
    Par défaut
    Commence déjà par nous dire qu'est-ce qui ne marche pas ? On sait ce que tu cherches à avoir, mais qu'à tu pour l'instant ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    Erf oui désolé :s.
    Ce que j'obtiens pour le moment ce sont toutes les colonnes des fichiers1 et 2 qui sont différentes. Et il me les présente comme celà:

    ************** FICHIER No 1 **************

    (Fichier 1) Code Groupe 2(Fichier 1) Nom Groupe 2(Fichier 1) Code 2(Fichier 1) Intitulé 2(Fichier 1) Régie commerciale 2(Fichier 1) Régie financière 2(Fichier 1) Type 2(Fichier 1) Date de mise à jour 2(Fichier 1) 105 2(Fichier 1) RUBRIQUE 2(Fichier 1) 307 2(Fichier 1) ACCESS 2(Fichier 1)

    ************** FICHIER No 2 **************

    (Fichier 2) 105 2(Fichier 2) RUBRIQUE 2(Fichier 2) 307 2(Fichier 2) ACCESS 2(Fichier 2) 2(Fichier 2) 2(Fichier 2) 2(Fichier 2) 21/10/2009 15:31:51; 2(Fichier 2) 105 2(Fichier 2) RUBRIQUE 2(Fichier 2) 307 2(Fichier 2) ACCESS 2(Fichier 2) 2(Fichier 2) 2(Fichier 2) 2(Fichier 2) 21/10/2009 15:31:51; 2(Fichier 2) 105 2(Fichier 2) RUBRIQUE 2(Fichier 2) 307 2(Fichier 2) ACCESS 2(Fichier 2) 2(Fichier 2) 2(Fichier 2) 2(Fichier 2) 21/10/2009 15:31:51; 2(Fichier 2) 105 2(Fichier 2) RUBRIQUE 2(Fichier 2) 307 2(Fichier 2) ACCESS 2(Fichier 2)


    J'ai changer l'ordre des variable pour l'écriture etc...et ca me fait toujours ca :s.

    Ce que je voudrais réussir à avoir c'est ca:

    (Fichier 1) Code Groupe 2 ------ (Fichier 2) 105 2
    (Fichier 1) 307 2 ------- (Fichier 2) 307 3

    Etc...

    Il serait préférable que je poste la totalité du code?

  4. #4
    Membre confirmé Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Points : 633
    Points
    633
    Par défaut
    Non, c'est indigeste >< ! Juste la façon dont tu appelles la fonction et la possible fonction compare1();.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    La façon dont j'appelle la fonction:
    compare( MonTableau1, MonTableau2, fichier_log1 );
    et
    compare2( MonTableau2, MonTableau1, fichier_log1 );


    Et la fonction compare1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    int compare(vector < structure > Tab1, vector < structure > Tab2, ofstream &fichier)
    {
    	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;
     
    	fichier << " ************** FICHIER No 1 ************** " << endl << 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 (*itCurrent2 == *itCurrent1 && itCurrent2->col[i] == itCurrent1->col[i])
    				{
    					trouve = true;
    					break;
    				}
     
    				if( trouve == false )
    				{
    					compteur = compteur++;
    					//cout << *itCurrent1;
    					fichier << "(Fichier 1)" << "\t"<< itCurrent2->col[i] << " " << num_ligne ;
    				}
    			}
    		}
    	}
     
     
    	fichier << endl << endl << endl << " ************** FICHIER No 2 ************** " << endl << endl;
    	return compteur;
    }

    J'espere que ca ira :s

  6. #6
    Membre confirmé Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Points : 633
    Points
    633
    Par défaut
    Ben, tu écris dans un log, puis un autre.
    J'ai pas bien compris ce que tu veux oO... Un truc genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout << "(fichier 1)" << itCurrent1->col[i] << "-----( fichier2) " << itCurrent2->col[i] << endl;
    ?

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    Non, le fichier dans lequel j'écris est le meme, c'est juste que je passe par deux fonctions :s. Je viens de trouver ce qui ne va pas.
    En fait c'est pas dans l'affichage, c'est dans la comparaison, pcq je compare deux fois les fichiers -_-'.
    En fait, il faudrait que je garde que la fonction compare() et que je gère l'affichage dedans .
    Je pense avoir trouver.
    Je te remercie pour ton aide

Discussions similaires

  1. Affichage des résultats dans une fenêtre
    Par yoyo69 dans le forum MATLAB
    Réponses: 2
    Dernier message: 10/12/2007, 09h06
  2. Réponses: 1
    Dernier message: 16/10/2007, 18h20
  3. Affichage des résultats d'une requête dans listbox
    Par Deallyra dans le forum VBA Access
    Réponses: 8
    Dernier message: 09/10/2007, 14h09
  4. [MySQL] affichage des résultats d'une recherche dans la base
    Par dolf13 dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 21/11/2006, 17h18
  5. [MySQL] Affichage des résultats d'une requête sur plusieurs pages
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/10/2006, 13h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo