Advertisement
Guest User

Tablice

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