Advertisement
Guest User

Tablice_Klasa

a guest
Mar 23rd, 2013
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.64 KB | None | 0 0
  1.  
  2. //======================================================================================================================//
  3. //                                                                                                                      //
  4. //                                              *   Michał Tybiński     *                                                 //
  5. //                                              *       200895        *                                                 //
  6. //                                              *                     *                                                 //
  7. //                                                                                                                      //
  8. //                                                                                                                      //
  9. //                                                                                                                      //
  10. //======================================================================================================================//                                                                                                                      //
  11.                                                                                                                        
  12. #include "stdafx.h"
  13.  
  14. void dodaj_tablice(int);
  15. void input(int &w);
  16.  
  17. Tablica *baza[10];
  18.  
  19. //========================================================================================================================//
  20.  
  21. int _tmain(int argc, _TCHAR* argv[])
  22. {
  23.     int select, lngt, temp, temp2, temp3, exit = 0;
  24.     int &pnt = Tablica::ilosc; //licznik ilosci obiektow
  25.     fstream plik;
  26.  
  27.     Tablica wynik;
  28.     wynik = (*baza[0] + *baza[1]);
  29.     wynik.wyswietl();
  30.            
  31. //==================================================*Odczyt pliku*========================================================//
  32.     plik.open("data.txt", ios::in);
  33.     if(plik.good())
  34.     {
  35.         istringstream instream;
  36.         string buffer;
  37.         char op;
  38.         plik >> lngt; //pierwsza liczba w pliku to ilosc zapisanych tablic
  39.                
  40.         while(getline(plik, buffer, ';') && pnt < lngt)
  41.         {
  42.             instream.clear();
  43.             instream.str(buffer);
  44.             if(instream >> op >> temp >> op) //szukamy skladni w postaci '{' int '}' --> rozmiar tablicy
  45.             {
  46.                 dodaj_tablice(temp);
  47.                 for(int i=0; i<temp; i++)
  48.                 {
  49.                     instream >> temp2;
  50.                     baza[pnt-1]->adres()[i] = temp2;
  51.                 }
  52.                 baza[pnt-1]->srednia();
  53.             }
  54.         }
  55.         cout << "*===========================*\n"
  56.              << "Wczytano " << pnt <<" tablic z pliku!\n"
  57.              << "*===========================*\n";
  58.        
  59.         plik.close();
  60.     }
  61.    
  62. //========================================================================================================================//
  63.        
  64. do{
  65.     cout << "Witamy w programie *TABLICE*!\n"
  66.          << "  >  tablic w bazie: "<<pnt<<" <\n\n";
  67.  
  68.     cout << "\t 1) Dodaj tablice\n"
  69.          << "\t 2) Wyswietl tablice\n"
  70.          << "\t 3) Posortuj tablice\n"
  71.          << "\t 4) Usun tablice\n"
  72.          << "\t 5) Dodaj dwie pierwsze tablice\n"
  73.          << "\t 6) Zakoncz\n"
  74.          << "\n :"; input(select);
  75.  
  76.  
  77.     switch(select)
  78.     {
  79.         case 1:
  80.             {
  81.                 system("CLS");
  82.                 if (pnt==10) {cout << "Osiagnieto limit bazy, aby dodac nowa, usun jedna z istniejacych\n"; break;}
  83.                 cout << "Jakich rozmiarow tablice chcesz utworzyc? :";
  84.                 input(lngt);
  85.                 if (lngt>10) {cout << "Za duzy rozmiar, MAX = 10\n"; break;};
  86.                
  87.                 dodaj_tablice(lngt);
  88.                 if(baza[pnt-1]) baza[pnt-1]->wypelnij();
  89.                 break;
  90.             }
  91.         case 2:
  92.             {
  93.                 system("CLS");
  94.                 if(pnt==0) cout << "Najpierw dodaj tablice do bazy\n";
  95.                 else
  96.                 {
  97.                     cout <<"Tablic w bazie: "<<pnt<<"#, ktora chcesz wyswietlic? :";
  98.                     input(temp);
  99.                     if(temp>pnt || temp<0) {cout << "Nie ma takiej tablicy!\n"; break;}
  100.  
  101.                     cout << "\nW jakiej notacji chcesz wyswietlic dane?\n";
  102.                     cout << "1) zwyklej\n";
  103.                     cout << "2) naukowej\n";
  104.                     cout << "3) szesnastkowej\n";
  105.                     cout << "#: ";
  106.                     input(temp2); if(temp > 3 || temp < 1) break;
  107.                    
  108.                     cout <<"::Podaj rzadana precyzje (0-5): ";
  109.                     input(temp3); if(temp2 > 5 || temp2 < 0) break;
  110.                                        
  111.                     baza[temp-1]->wyswietl(temp2, temp3);
  112.                 }
  113.                 break;
  114.                
  115.             }
  116.         case 3:
  117.             {
  118.                 system("CLS");
  119.                 cout <<"Tablic w bazie: "<<pnt<<"#, ktora chcesz posortowac? ";
  120.                 cin >> temp;
  121.                 baza[temp-1]->insert_sort();
  122.                 break;
  123.             }
  124.        
  125.         case 4:
  126.             {
  127.                 system("CLS");
  128.                 cout <<"Tablic w bazie: "<<pnt<<"#, ktora chcesz usunac? ";
  129.                 input(temp);
  130.                 if(pnt==1) delete baza[0];
  131.                 else
  132.                 {  
  133.                     delete baza[temp-1];
  134.                     for(int k=temp-1; k<pnt; k++)
  135.                     {
  136.                         baza[k]=baza[k+1];
  137.                     }
  138.                    
  139.                 }
  140.                 break;
  141.                
  142.             }
  143.         case 5:
  144.             {
  145.                 system("CLS");
  146.                 cout << "Dodamy do siebie dwie pierwsze tablice i zapiszemy w nowej\n";
  147.                 cout << "Uzywamy przeladowanego operatora '+'\n\n";
  148.                 int rA = baza[0]->rozmiar();
  149.                 int rB = baza[1]->rozmiar();
  150.                 dodaj_tablice((rA > rB) ? rA : rB);
  151.                 *baza[pnt-1] = *baza[0] + *baza[1];
  152.                 break;             
  153.             }
  154.         case 6:
  155.             {
  156.                 exit = 1;
  157.                 break;
  158.             }
  159.     }
  160. }while(!exit);
  161.  
  162. //===================================================##Zapis##============================================================//
  163. if(pnt!=0)
  164. {
  165.     plik.open("data.txt", ios::out | ios::trunc);
  166.  
  167.     plik << pnt << endl;
  168.     for(int i=0; i<pnt; i++)
  169.     {
  170.         int k = baza[i]->rozmiar();
  171.         plik << "{" << k << "} ";   //zapisujemy liczbe elementow
  172.         for(int j=0; j < k; j++)
  173.     {
  174.         plik << " " << baza[i]->adres()[j]; //zapis elementow
  175.     }
  176.     plik << ";" << endl;   //znak konca wiersza (jeden wiersz -> jedna tablica)
  177. }
  178.  
  179. plik.close();
  180. }
  181. //===================================================##Koniec##===========================================================//
  182. temp = pnt;
  183. for(int i=0; i!=temp; i++) delete baza[i];
  184. return 0;
  185. }
  186. //====================================================*Funkcje*===========================================================//
  187.  
  188. void dodaj_tablice(int n)
  189. {
  190.     int m = Tablica::ilosc;
  191.     baza[m] = new Tablica(n);
  192.     if(baza[m] == NULL) {cout << "\n\tBrak pamieci\n";}
  193. }
  194.  
  195. void input(int &w) //funkca sprawdzajaca poprawnosc wprowadzanych danych
  196. {
  197.     do{
  198.         if(cin.fail()) cout << "\nBlad, powtorz wprowadzenie: ";
  199.         cin.clear(); cin.sync();
  200.         cin >> w; cout << endl;
  201.     }while(cin.fail());
  202. }
  203. //========================================================================================================================//
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement