C++ > Comparaison de fichiers

TitreComparaison de fichiers
Postée le22-09-2009
Affichée507
Mini-lien
Description

Pour comparer

EtatContient des erreurs. Contient des erreurs.
Code d'insertion
Options
Afficher les numéros de lignes  Mettre la source en plein ecran  Selectionner la source  Partager sur Facebook 
Téléchargement Telecharger en format txt  Telecharger en format pdf  Telecharger en format cpp
Plein ecran
// Tri Titres-Tarifs.cpp : définit le point d'entrée pour l'application console.
//

////////////////////////////////////////////////////////////////////////////////////////////////
///                                                                             Travail demandé:                                                                         ///
///                                                                                                                                                                                      ///
/// Ecrire un programme en C/C++ qui permettrait de, tout dabord trier les titres des            ///
/// magazines par ordre alphabetique, avec leur nombre et le total de leurs tarifs.                      ///
/// Il faudra ensuite faire la moyenne de ces tarifs pour chaque magazines.                                      ///
///                                                                                                                                                                                      ///
////////////////////////////////////////////////////////////////////////////////////////////////


/////////////////////
/// Bibliothèques ///
/////////////////////

#include <stdafx.h>
#include <string>
#include <fstream>
#include <iostream>
#include <sstream>
#include <cassert>
#include <vector>
#include <algorithm>
using namespace std;



////////////////////////////////
/// Déclaration de Variables ///
////////////////////////////////

typedef struct Colonnes_struct
{
        string col1;
        string col2;
        string col3;
        string col4;
        string col5;
        string col6;
        string col7;
        string col8;

        bool operator<(Colonnes_struct& cols)
        {
                if ( col1 < cols.col1 )
                        return true;

                if ( col2 < cols.col2 )
                        return true;

                return false;
        };
};


////////////////////////////////
/// Prototype de Fonction(s) ///
////////////////////////////////

ostream& operator<< (ostream& out, Colonnes_struct colonneS );


///////////////////////////
/// Programme Principal ///
///////////////////////////

int _tmain(int argc, _TCHAR* argv[])
{
        // Ouverture du fichier 20090727-TABLES_EDI.csv en lecture.
        ifstream fichier1("C:\\Documents and Settings\\bastien\\Bureau\\Offres - Tables EDI Excel\\20090727-TABLES_EDI.csv");
        if ( fichier1.is_open ( ) == false )    // Test de l'ouverture du fichier1.
        {
                cout << "Erreur lors de l'ouverture du fichier 20090727-TABLES_EDI.csv" << endl;
                assert ( false );
                return -1;
        }
       
        // Ouverture du fichier Ecriture du fichier2.txt en écriture.
        ofstream fichier2("C:\\Documents and Settings\\bastien\\Bureau\\Ecriture du fichier2.txt");
        if ( fichier2.is_open ( ) == false )    // Test de louverture du fichier2
        {
                cout << "Erreur lors de l'ouverture du fichier Ecriture du fichier2" << endl;
                assert ( false );
                return -1;
        }

                string ligne; // variable contenant chaque ligne lue
                Colonnes_struct colonneS;
                vector < Colonnes_struct > MonTableau;

        // cette boucle s'arrête dès qu'une erreur de lecture survient
        while ( getline( fichier1, ligne ) )
        {
                        getline( fichier1, colonneS.col1, ';' );
            //cout << colonne1 << endl;

                        getline( fichier1, colonneS.col2, ';' );
            //cout << colonne2 << endl;

                        getline( fichier1, colonneS.col3, ';' );
            //cout << colonne3 << endl;

                        getline( fichier1, colonneS.col4, ';' );
            //cout << colonne4 << endl;

                        getline( fichier1, colonneS.col5, ';' );
            //cout << colonne5 << endl;

                        getline( fichier1, colonneS.col6, ';' );
            //cout << colonne6 << endl;

                        getline( fichier1, colonneS.col7, ';' );
            //cout << colonne7 << endl;

                        getline( fichier1, colonneS.col8);
            //cout << colonne8 << endl;

                        cout << colonneS.col1 << "\t" << colonneS.col4 << endl;

                        MonTableau.push_back(colonneS);

                        fichier2 << colonneS.col1 << "\t"<< colonneS.col4 << endl;      // On écrit les deux colonnes qui nous intérresses.
        }



                // Ouverture du fichier 20090727-TABLES_EDI.csv en lecture.
        ifstream fichier3("C:\\Documents and Settings\\bastien\\Bureau\\Offres - Tables EDI Excel\\20090731-TABLES_EDI.csv");
        if ( fichier3.is_open ( ) == false )    // Test de l'ouverture du fichier3.
        {
                cout << "Erreur lors de l'ouverture du fichier 20090731-TABLES_EDI.csv" << endl;
                assert ( false );
                return -1;
        }
       
        // Ouverture du fichier Ecriture du fichier4.txt en écriture.
        ofstream fichier4("C:\\Documents and Settings\\bastien\\Bureau\\Ecriture du fichier4.txt");
        if ( fichier4.is_open ( ) == false )    // Test de louverture du fichier4
        {
                cout << "Erreur lors de l'ouverture du fichier Ecriture du fichier4" << endl;
                assert ( false );
                return -1;
        }

                string ligne1; // variable contenant chaque ligne lue
                vector < Colonnes_struct > MonTableau2;

        // cette boucle s'arrête dès qu'une erreur de lecture survient
        while ( getline( fichier3, ligne1 ) )
        {
                        getline( fichier3, colonneS.col1, ';' );
            //cout << colonne1 << endl;

                        getline( fichier3, colonneS.col2, ';' );
            //cout << colonne2 << endl;

                        getline( fichier3,colonneS.col3, ';' );
            //cout << colonne3 << endl;

                        getline( fichier3, colonneS.col4, ';' );
            //cout << colonne4 << endl;

                        getline( fichier3, colonneS.col5, ';' );
            //cout << colonne5 << endl;

                        getline( fichier3, colonneS.col6, ';' );
            //cout << colonne6 << endl;

                        getline( fichier3, colonneS.col7, ';' );
            //cout << colonne7 << endl;

                        getline( fichier3, colonneS.col8);
            //cout << colonne8 << endl;

                        cout << colonneS.col1<< "\t" << colonneS.col4 << endl;
                       
                        MonTableau2.push_back(colonneS);
                       
                        fichier4 << colonneS.col1 << "\t"<< colonneS.col4 << endl;      // On écrit les deux colonnes qui nous intérresses.    
        }

                // Affichage du tableau pour le fichier 1
                for ( unsigned int i = 0; i < MonTableau.size() ; i++ )
                {
                        cout << "Mon Tableau: "
                                << colonneS.col1 << "  " << colonneS.col2 << "  "  << colonneS.col3 << "  "  << colonneS.col4
                                 << "  " << colonneS.col5  << "  " << colonneS.col6  << "  " << colonneS.col7  << "  " << colonneS.col8
                                 << endl;
                }


                // Affcihage du tableau our le fichier 2
                for ( unsigned int i = 0; i < MonTableau2.size() ; i++ )
                {
                        cout << "Mon Tableau2: "
                                << colonneS.col1 << "  " << colonneS.col2 << "  "  << colonneS.col3 << "  "  << colonneS.col4
                                 << "  " << colonneS.col5  << "  " << colonneS.col6  << "  " << colonneS.col7  << "  " << colonneS.col8
                                 << endl;
                }

        vector < Colonnes_struct > vResult;
        vResult.reserve ( max ( MonTableau.size ( ), MonTableau2.size ( ) ),
        set_difference ( MonTableau.begin ( ), MonTableau.end ( ),
                MonTableau2.begin ( ), MonTableau2.end ( ),
                vResult.begin ( ) ));


                fichier2.close();       // on referme le fichier2.
                fichier1.close();       // on referme le fichier1.
                fichier4.close();       // on referme le fichier4.
                fichier3.close();       // on referme le fichier3.

        return 0;
}

///////////////////////////////
/// Décaration de Fonctions ///
///////////////////////////////

ostream& operator<< (ostream& out, Colonnes_struct colonneS )
{
        out << colonneS.col1 << colonneS.col2 << colonneS.col3 << colonneS.col4
                 << colonneS.col5 << colonneS.col6 << colonneS.col7 << colonneS.col8 << endl;
        return out;
}