Sei sulla pagina 1di 3

19/7/2010 #include <iostream> #include <fstream> using namespace std;

esame.cpp

int contaRighe (char nomeFile[]); void caricaVettore (char nomeFile[], int vettore[]); void ordina (int vettore[], int dim); void fondi (int vettoreSum[], int vettoreIn1[], int vettoreIn2[], int dim1, int dim2); void pulisci (int vettoreOut[], int vettoreSum[], int vettoreDel[], int dimSum, int dimDel); void salvaFile (char nomeFile[], int vettore[], int dim); void scambiaElementi(int &a, int &b); int main() { char char char char elencoIn1[] elencoIn2[] elencoDel[] elencoOut[] = = = = "elenco1.txt"; "elenco2.txt"; "elenco3.txt"; "risultato.txt";

int dim1 = contaRighe ( elencoIn1 ); int dim2 = contaRighe ( elencoIn2 ); int dim3 = contaRighe ( elencoDel ); int int int int int vettoreIn1 vettoreIn2 vettoreDel vettoreSum vettoreOut [dim1]; [dim2]; [dim3]; [dim1+dim2]; [dim1+dim2-dim3];

caricaVettore ( elencoIn1, vettoreIn1 ); caricaVettore ( elencoIn2, vettoreIn2 ); caricaVettore ( elencoDel, vettoreDel ); fondi ( vettoreSum, vettoreIn1, vettoreIn2, dim1, dim2 ); pulisci ( vettoreOut, vettoreSum, vettoreDel, dim1+dim2, dim3 ); ordina ( vettoreOut, dim1+dim2-dim3 ); salvaFile ( elencoOut, vettoreOut, dim1+dim2-dim3 ); return 0; } void caricaVettore (char nomeFile[], int vettore[]) { ifstream file; int number; int rows=0; int i=0; char c; file.open(nomeFile); while (file >> number) vettore[i++] = number; file.close(); } int contaRighe (char nomeFile[]) { int rows=0; ifstream file; char c;

19/7/2010 file.open(nomeFile); while (file.get(c)) if (c=='\n') rows++; file.close(); return rows; }

esame.cpp

void fondi ( int vettoreSum[], int vettoreIn1[], int vettoreIn2[], int dim1, int dim2 ) { int j=0; for (int i=0; i<dim1; i++) vettoreSum[j++]=vettoreIn1[i]; for (int i=0; i<dim2; i++) vettoreSum[j++]=vettoreIn2[i]; } void pulisci (int vettoreOut[], int vettoreSum[], int vettoreDel[], int dim, int dimDel) { bool del; int k=0; for ( int i=0; i<dim; i++ ) { del = false; for ( int j=0; j<dimDel; j++ ) if ( vettoreSum[i]==vettoreDel[j] ) del = true; if ( del==false ) vettoreOut[k++]=vettoreSum[i]; } } void salvaFile (char nomeFile[], int vettore[], int dim) { ofstream file; file.open(nomeFile); for ( int i=0; i<dim; i++ ) file << vettore[i] << endl; file.close(); } void ordina(int num[], int length) { // Il flag viene posto ad uno per iniziare il primo passo bool flag = true; // Ripete l'ordinamento per tutti gli elementi del vettore // Se il flag indica che nell'ultimo passaggio non sono stati // effettuati ordinamenti, l'algoritmo termina. int limit = length; while ((limit > 0) && flag) { flag = false; // Scorre il vettore fino al penultimo elemento // (l'ultimo non pu essere scambiato col successivo!)

19/7/2010

esame.cpp for (int j=0; j < (limit -1); j++) { // Per ottenere un differente ordinamento sufficiente // cambiare il segno della disuguaglianza che segue if (num[j+1] < num[j]) { scambiaElementi(num[j], num[j+1]); // Se c' stato uno swap flag va a 1. // In caso contrario rimane a 0 e fa s che il ciclo termini. flag = true; } } limit--;

} } // Scambia di posto gli elementi a e b void scambiaElementi(int &a, int &b) { int aux; aux = a; a = b; b = aux; }