Desktop/Daniele/Program Editing/Progetto di informatica 2/componenti/main.cpp

00001 
00002 #include "compressore.h"
00003 #include "decompressore.h"
00004 #include <iostream>
00005 
00006 
00007 #ifdef WIN32 
00008 //se questa condizione è vera vuol dire che il programma sta lavorando sotto
00009 //il sistema operativo windows, quindi se questa condizione è vera utilizzo
00010 //la funzione sotto riportata che pulisce la finestra del dev
00011 
00012 
00013 #include  <windows.h>
00014 
00016 /*questa funzione è adoperabile solo ed esclusivamente su windows
00017 *e provvede a pulire la finesta di del dev C++
00018 */
00019 void clrscr() 
00020 { 
00021 COORD coordScreen = { 0, 0 }; 
00022 DWORD cCharsWritten; 
00023 CONSOLE_SCREEN_BUFFER_INFO csbi; 
00024 DWORD dwConSize; 
00025 HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); 
00026 
00027 GetConsoleScreenBufferInfo(hConsole, &csbi); 
00028 dwConSize = csbi.dwSize.X * csbi.dwSize.Y; 
00029 FillConsoleOutputCharacter(hConsole, TEXT(' '), dwConSize, 
00030     coordScreen, &cCharsWritten); 
00031 GetConsoleScreenBufferInfo(hConsole, &csbi); 
00032 FillConsoleOutputAttribute(hConsole, csbi.wAttributes, dwConSize, 
00033     coordScreen, &cCharsWritten); 
00034 SetConsoleCursorPosition(hConsole, coordScreen); 
00035 }
00036 
00037 #endif
00038 
00040 
00043 int main()
00044 {
00045 while (1)
00046 {
00047 #ifdef WIN32
00048 clrscr(); //pulisce lo schermo
00049 #endif
00050 
00051 cout << "---PROGRAMMA PER COMPRESSIONE/DECOMPRESSIONE---" << endl;
00052 cout << "AVVISO: non utilizzare spaziature nell'inserimento di nomi o" << endl;
00053 cout << "percorsi, nel caso fossero presenti, esse verranno ignorate" << endl;
00054 cout << "Premere il tasto Invio per continuare . . ." << endl;
00055 
00056 try //blocco try per la cattura delle eccezioni generate dalle funzioni nelle
00057     //altre classi
00058 {
00059 char c;
00060 cin.clear();
00061 cin.ignore(numeric_limits<streamsize>::max(),'\n');
00062 cin.clear();
00063 cout << endl;
00064 cout << "MENU'" << endl;
00065 cout << "1) comprimi un file" << endl;
00066 cout << "2) decomprimi un file" << endl;
00067 cout << "3) esci dal programma" << endl;
00068 int a;
00069 cout << "digitare l'alternativa scelta: ";
00070 cin >> a;
00071 if (!cin) 
00072    {
00073    cout << "imput non corretto" <<endl;
00074    system ("PAUSE");
00075    continue;
00076    }
00077 string file;
00078 string file1;
00079 string formato = ".huf";
00080 cin.clear();
00081 cin.ignore(numeric_limits<streamsize>::max(),'\n');
00082 cin.clear();
00083 switch (a)
00084        {
00085        case 1: cout << "il file da comprimere e'"
00086                " in questa cartella? (Y,N) --> ";
00087                cin >> c;
00088                if (!cin)
00089                    {
00090                    cout << "imput non corretto" << endl;
00091                    system ("PAUSE");
00092                    continue;                   
00093                    }
00094                cin.clear();
00095                cin.ignore(numeric_limits<streamsize>::max(),'\n');
00096                cin.clear();
00097                switch (c)
00098                       {
00099                       case 'y': case 'Y': cout << "nome del file (comprendente"
00100                                                   " estensione): ";
00101                                           cin >> file;
00102                                           if (!cin)
00103                                           {
00104                                           cout << "imput non corretto" << endl;
00105                                           continue;                   
00106                                           }
00107                                           break;
00108                       case 'n': case 'N': cout << "nome del file (comprendente"
00109                                                   " percorso e estensione): ";
00110                                           cin >> file;
00111                                           if (!cin)
00112                                           {
00113                                           cout << "imput non corretto" << endl;
00114                                           system ("PAUSE");
00115                                           continue;                                              
00116                                           }
00117                                           break;
00118                       default: cout << "imput non corretto" << endl;
00119                                system ("PAUSE");
00120                                continue;
00121                       }
00122                cin.clear();
00123                cin.ignore(numeric_limits<streamsize>::max(),'\n');
00124                cin.clear();
00125               cout << "si desidera utilizzare il formato predefinito" << endl << 
00126                "per la compressione .huf? (Y,N) --> ";
00127                cin >> c;
00128                if (!cin)
00129                    {
00130                    cout << "imput non corretto" << endl;
00131                    system ("PAUSE");
00132                    continue;                   
00133                    }
00134                switch (c)
00135                       {
00136                       case 'y': case 'Y': break;
00137                       case 'n': case 'N': cout << "specificare il nuovo"
00138                                                 " formato (comprendente '.',"
00139                                                 " max 3 lettere): ";
00140                                           cin.clear();
00141                                           cin.ignore(numeric_limits<streamsize>::max(),'\n');
00142                                           cin.clear();
00143                                           cin >> formato;
00144                                           if (!cin)
00145                                           {
00146                                           cout << "imput non corretto" << endl;
00147                                           system ("PAUSE");
00148                                           continue;                   
00149                                           }
00150                                           break;
00151                       default: cout << "imput non corretto" << endl;
00152                                system ("PAUSE");
00153                                continue;
00154                       }                                              
00155                cin.clear();
00156                cin.ignore(numeric_limits<streamsize>::max(),'\n');
00157                cin.clear();
00158                cout << "il file compresso sara' ubicato"
00159                " in questa cartella? (Y,N) --> ";
00160                cin >> c;
00161                if (!cin)
00162                    {
00163                    cout << "imput non corretto" << endl;
00164                    system ("PAUSE");
00165                    continue;                   
00166                    }
00167                cin.clear();
00168                cin.ignore(numeric_limits<streamsize>::max(),'\n');
00169                cin.clear();
00170                switch (c)
00171                       {
00172                       case 'y': case 'Y': cout << "nome del file(senza e"
00173                                           "stensione): ";
00174                                           cin >> file1;
00175                                           if (!cin)
00176                                           {
00177                                           cout << "imput non corretto" << endl;
00178                                           system ("PAUSE");
00179                                           continue;                   
00180                                           }
00181                                           break;
00182                       case 'n': case 'N': cout << "nome del file (comprendente"
00183                                                   " percorso, senza estens"
00184                                                   "ione): ";
00185                                           cin >> file1;
00186                                           if (!cin)
00187                                           {
00188                                           cout << "imput non corretto" << endl;
00189                                           system ("PAUSE");
00190                                           continue;                                              
00191                                           }
00192                                           break;
00193                       default: cout << "imput non corretto" << endl;
00194                                system ("PAUSE");
00195                                continue;
00196                       }
00197                cin.clear();
00198                cin.ignore(numeric_limits<streamsize>::max(),'\n');
00199                cin.clear();
00200                cout << "compressione in corso..." << endl;
00201                file1 = file1+formato;
00202                {
00203                compressore (file.c_str(), file1.c_str());
00204                }
00205                cout << "compressione ultimata" << endl;
00206                system ("PAUSE");
00207                break;
00208        
00209        case 2: cout << "il file da decomprimere e'"
00210                " in questa cartella? (Y,N) --> ";
00211                cin >> c;
00212                if (!cin)
00213                    {
00214                    cout << "imput non corretto" << endl;
00215                    system ("PAUSE");
00216                    continue;                   
00217                    }
00218                cin.clear();
00219                cin.ignore(numeric_limits<streamsize>::max(),'\n');
00220                cin.clear();
00221                switch (c)
00222                       {
00223                       case 'y': case 'Y': cout << "nome del file (comprendente"
00224                                                   " estensione): ";
00225                                           cin >> file;
00226                                           if (!cin)
00227                                           {
00228                                           cout << "imput non corretto" << endl;
00229                                           system ("PAUSE");
00230                                           continue;                   
00231                                           }
00232                                           break;
00233                       case 'n': case 'N': cout << "nome del file (comprendente"
00234                                                   " percorso e estensione: ";
00235                                           cin >> file;
00236                                           if (!cin)
00237                                           {
00238                                           cout << "imput non corretto" << endl;
00239                                           system ("PAUSE");
00240                                           continue;                                              
00241                                           }
00242                                           break;
00243                       default: cout << "imput non corretto" << endl;
00244                                system ("PAUSE");
00245                                continue;
00246                       }
00247                cout << "il file decompresso sara' ubicato"
00248                " in questa cartella? (Y,N) --> ";
00249                cin >> c;
00250                if (!cin) continue;
00251                switch (c)
00252                       {
00253                       case 'y': case 'Y': cout << "nome del file "
00254                                                   "(comprendente"
00255                                                   " estensione): ";
00256                                           cin >> file1;
00257                                           if (!cin)
00258                                           {
00259                                           cout << "imput non corretto" << endl;
00260                                           system ("PAUSE");
00261                                           continue;                   
00262                                           }
00263                                           break;
00264                       case 'n': case 'N': cout << "nome del file (comprendente"
00265                                                   " percorso e estensione): ";
00266                                           cin >> file1;
00267                                           if (!cin)
00268                                           {
00269                                           cout << "imput non corretto" << endl;
00270                                           system ("PAUSE");
00271                                           continue;                                              
00272                                           }
00273                                           break;
00274                       default: cout << "imput non corretto" << endl;
00275                                system ("PAUSE");
00276                                continue;
00277                       }
00278                cout << "decompressione in corso..." << endl;
00279                {
00280                decompressore (file.c_str(), file1.c_str());
00281                }
00282                cout << "decompressione ultimata" << endl;
00283                system ("PAUSE");
00284                break;
00285        case 3: cout << "chiusura applicazione in corso" << endl;
00286                system ("PAUSE");
00287                return 0;
00288                break;
00289        default: cout << "input non corretto" << endl;
00290                 system ("PAUSE");
00291                 continue;
00292        }
00293 
00294 }
00295 catch (const char str[])
00296       {
00297       if (strcmp(str, "vuoto") == 0)
00298          {
00299          cout << "file vuoto" << endl;
00300          system ("PAUSE");
00301          continue;
00302          }
00303       if (strcmp(str, "memoria") == 0)
00304          {
00305          cout << "memoria dinamica esaurita" << endl;
00306          system ("PAUSE");
00307          continue;
00308          }
00309       if (strcmp(str, "vuoto") == 0)
00310          {
00311          cout << "file vuoto" << endl;
00312          system ("PAUSE");
00313          continue;
00314          }
00315       if (strcmp(str, "compressione") == 0)
00316          {
00317          cout << "errore durante la compressione" << endl;
00318          system ("PAUSE");
00319          continue;
00320          }
00321       if (strcmp(str, "apertura") == 0)
00322          {
00323          cout << "impossibile aprire il file, potrebbe essere inesistente"
00324          " o protetto" << endl;
00325          system ("PAUSE");
00326          continue;
00327          }
00328       if (strcmp(str, "contatore") == 0)
00329          {
00330          cout << "errore critico nella scrittura della codifica" << endl;
00331          system ("PAUSE");
00332          continue;
00333          }
00334       if (strcmp(str, "lettura") == 0)
00335          {
00336          cout << "il file non e' codificato correttamente, potrebbe non essere"
00337          " stato codificato con questo programma" << endl;
00338          system ("PAUSE");
00339          continue;
00340          }
00341       }
00342 }
00343 cout << "errore critico" << endl;
00344 system ("PAUSE");
00345 exit(1);
00346 }
00347 
00348 

Generated on Sat May 20 14:57:56 2006 for Huffzip by  doxygen 1.4.6-NO