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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243
|
// 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 pour 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;
}
cout << endl << endl;
if(MonTableau.size() != MonTableau2.size())
cout << "Les fichiers ne sont pas identiques" << endl << endl;
else
cout << "Les fichiers sont identiques" << endl << endl;
for( int i = 0; i < MonTableau; i++ )
{
for ( int j = 0; j < MonTableau2; j++)
{
cout << MonTableau2[j] << endl;
}
}
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;
} |
Partager