Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- template<class T>
- class tablica
- {
- T* tab;
- unsigned rozmiar;
- public:
- tablica(unsigned wielkosc) : tab(nullptr), rozmiar(wielkosc)
- {
- tab = new T[rozmiar];
- for(unsigned i = 0; i < rozmiar; ++i)
- tab[i] = 0;
- }
- tablica(unsigned wielkosc, T wartosc) : tab(nullptr), rozmiar(wielkosc)
- {
- tab = new T[rozmiar];
- for(unsigned i = 0; i < rozmiar; ++i)
- tab[i] = wartosc;
- }
- ~tablica()
- {
- cout << "usuwam tablice" << endl;
- delete[] tab;
- }
- int znajdz_pozycje(T wartosc)
- {
- for(unsigned i=0; i<rozmiar; i++)
- {
- if(tab[i]==wartosc)
- {
- return i;
- }
- }
- return -1;
- }
- void dodaj_wartosc(T wartosc)
- {
- T zastepcza[rozmiar+1];
- for(unsigned i=0; i<rozmiar; i++)
- {
- zastepcza[i]=tab[i];
- }
- zastepcza[rozmiar]=wartosc;
- delete [] tab;
- ++rozmiar;
- tab = new int[rozmiar];
- for(unsigned i=0; i<rozmiar; i++)
- {
- tab[i]=zastepcza[i];
- }
- }
- void sortuj(bool rosnaco)
- {
- for(unsigned i=0; i<rozmiar; i++)
- {
- for(unsigned j=0; i+j+1<rozmiar; j++)
- {
- if(rosnaco && tab[j]>tab[j+1])
- swap(tab[j],tab[j+1]);
- if(!rosnaco && tab[j]<tab[j+1])
- swap(tab[j],tab[j+1]);
- }
- }
- }
- void usun_pozycje(unsigned pozycja)
- {
- T zastepcza[rozmiar-1];
- for(unsigned i=0; i<pozycja; i++)
- {
- zastepcza[i]=tab[i];
- }
- for(unsigned i=pozycja+1; i<rozmiar; i++)
- {
- zastepcza[i-1]=tab[i];
- }
- delete [] tab;
- --rozmiar;
- tab=new T[rozmiar];
- for(unsigned i=0; i<rozmiar; i++)
- {
- tab[i]=zastepcza[i];
- }
- }
- void usun_wartosc(T wartosc)
- {
- while(ile_powtorzen(wartosc) > 0)
- {
- usun_pozycje(znajdz_pozycje(wartosc));
- }
- }
- void wypisz()
- {
- for(unsigned i=0; i<rozmiar; i++)
- {
- cout<<tab[i];
- cout<<" ";
- }
- cout<<endl;
- }
- void zmien_rozmiar(unsigned ile)
- {
- if(ile==rozmiar)
- return;
- T zastepcza[ile];
- if(ile<rozmiar)
- {
- for(unsigned i=0; i<ile; i++)
- {
- zastepcza[i]=tab[i];
- }
- delete [] tab;
- tab= new T[ile];
- for(unsigned i=0; i<ile; i++)
- {
- tab[i]=zastepcza[i];
- }
- }
- else
- {
- for(unsigned i=0; i<rozmiar; i++)
- {
- zastepcza[i]=tab[i];
- }
- delete [] tab;
- tab= new T[ile];
- for(unsigned i=0; i<rozmiar; i++)
- {
- tab[i]=zastepcza[i];
- }
- for(unsigned i=rozmiar; i<ile; i++)
- {
- tab[i]=0;
- }
- }
- rozmiar = ile;
- }
- void zmien_wartosc(unsigned pozycja, T wartosc)
- {
- if(pozycja < rozmiar)
- tab[pozycja] = wartosc;
- }
- unsigned get_rozmiar()
- {
- return rozmiar;
- }
- unsigned ile_powtorzen(T wartosc)
- {
- unsigned ile=0;
- for(unsigned i=0; i<rozmiar; i++)
- {
- if(tab[i]==wartosc)
- ile++;
- }
- return ile;
- }
- T odczytaj_wartosc(unsigned pozycja)
- {
- if(pozycja<rozmiar)
- return tab[pozycja];
- return 0;
- }
- T& operator[](size_t nr)
- {
- return tab[nr];
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement