fork download
  1. #include <iostream>
  2. #include <sstream>
  3. using namespace std;
  4.  
  5. class TablicaD // klasa z tablica liczb typu DOUBLE
  6. {
  7. private:
  8. int licznik; // deklaracja licznika elementow tablicy
  9. int rozmiar; // deklaracja zmiennej uzywanej jako rozmiar tablicy dynamicznej
  10. double *wtab; // deklaracja wskaznika do utworzenia tablicy dynamicznej
  11. double srednia; // zmienna do przechowywanie sredniej wartosci elementow tablicy
  12. char *wnazwa; // wskaznik do tablicy alokowanej dynamicznie z nazwa obiektu
  13.  
  14.  
  15.  
  16.  
  17.  
  18. public:
  19. TablicaD(int n); // deklaracja konstruktora bez nazwy obiektu
  20. TablicaD(int n, string tekst); // deklaracja konstruktora z nazwa obiektu jako drugi argument
  21. TablicaD(const TablicaD &); // deklaracja konstruktora kopiujacego
  22. ~TablicaD(); // deklaracja destruktora
  23. static int liczba_tablic; // zmienna statyczna, zawierajaca informacje o ilosci utworzonych obiektow klasy Tablica
  24. string nazwa_obiektu; // zmienna przechowująca nazwe obiektu o strukturze: Obiekt_[nr obiektu].[wpisana przez uzytkownika nazwa]
  25.  
  26. // przeciazenia oparatorow:
  27. TablicaD* operator+(const TablicaD &other) const;
  28. TablicaD* operator-(const TablicaD &other) const;
  29. TablicaD* operator/(const TablicaD &other) const;
  30. TablicaD* operator*(const TablicaD &other) const;
  31.  
  32.  
  33.  
  34.  
  35. //==================================================================================================
  36. // FUNKCJE SKLADOWE
  37. int size();
  38. int ile_tablic();
  39. void wypelnij();
  40. //void wypelnij_nazwe();
  41. //void wyswietl();
  42. void zeruj();
  43. void zapis_do_pliku();
  44. void zapis_do_pliku_nowy(); // zapis do pliku strumieniowo uzywajac flag formatowania
  45. void odczyt_z_pliku();
  46. void dopisz(string tekst);
  47.  
  48. //funkcje sortujace
  49. void sortuj_m();
  50. void sortuj_r();
  51.  
  52. //funkcje zmienajace notacje
  53. void szesnastkowo();
  54. void naukowo();
  55. void osemkowo();
  56.  
  57. //funkcja kontrolujaca prezycje
  58. void precyzja(int pr);
  59.  
  60. //==================================================================================================
  61.  
  62.  
  63. };
  64.  
  65. int TablicaD::liczba_tablic; // definicja zmiennej statycznej (domyslnie inicjalizowana zerem)
  66.  
  67. TablicaD::TablicaD(int n) // definicja funkcji konstruktora dla jednego argumentu: n - rozmiar tablicy
  68. {
  69.  
  70. rozmiar = n;
  71. wtab = new double[rozmiar]; // dynamiczna alokacja tablicy
  72. cout << "Zostala utworzona tablica elementow double o rozmiarze: " << rozmiar << endl;
  73. liczba_tablic++;
  74. // alokacja pamieci na tablice z nazwa obiektu
  75. wnazwa = new char[21];
  76. //wypelnij_nazwe();
  77.  
  78. }
  79.  
  80. TablicaD::TablicaD(int n, string tekst) // definicja funkcji konstruktora dla 2 argumentow: n - rozmiar tablicy, tekst - nazwa obiektu
  81. {
  82.  
  83. rozmiar = n;
  84. wtab = new double[rozmiar]; // dynamiczna alokacja tablicy
  85. cout << "Zostala utworzona tablica elementow double o rozmiarze: " << rozmiar << endl;
  86. liczba_tablic++;
  87.  
  88. int ilosc = liczba_tablic;
  89.  
  90. ostringstream konwersja; // strumieniowa konwersja typu int na string
  91. konwersja << ilosc;
  92. string ilosc_string = konwersja.str();
  93.  
  94. nazwa_obiektu = "Obiekt_";
  95. nazwa_obiektu = nazwa_obiektu + ilosc_string + "." + tekst;
  96. cout << "Nazwa utworzonego obiektu: " << nazwa_obiektu << endl;
  97.  
  98. }
  99.  
  100. TablicaD::TablicaD(const TablicaD & wzor) : licznik(wzor.licznik), rozmiar(wzor.rozmiar), // definicja funkcji konstruktora kopiujacego
  101. srednia(wzor.srednia), nazwa_obiektu(wzor.nazwa_obiektu)
  102.  
  103. {
  104. cout << "\n********Dziala konstruktor kopiujacy **********\n";
  105. wtab = new double[rozmiar];
  106.  
  107. for(int i=0; i<rozmiar; i++) // petla kopiujaca zawartosc tablicy do tablicy w nowym obiekcie
  108. {
  109. wtab[i] = wzor.wtab[i];
  110. }
  111. nazwa_obiektu += ".SKOPIOWANY";
  112. }
  113.  
  114.  
  115. TablicaD::~TablicaD(void) // definicja funkcji destruktora
  116. {
  117. cout << "Destruktor usuwa obiekt \n";
  118. delete []wtab;
  119. //delete []wnazwa;
  120. wtab=0;
  121. wnazwa =0;
  122. liczba_tablic--;
  123.  
  124. }
  125.  
  126. int main()
  127. {
  128. TablicaD obiekt(10);
  129. TablicaD obiekt_skopiowany = obiekt;
  130. cout << "Nazwa skopiowanego obiektu: " << obiekt_skopiowany.nazwa_obiektu << endl;
  131. cout << "Zawartosc tablicy w skopiowanym obiekcie: " << endl;
  132. //obiekt_skopiowany.wyswietl();
  133.  
  134. return 0;
  135. }
Success #stdin #stdout 0s 3036KB
stdin
Standard input is empty
stdout
Zostala utworzona tablica elementow double o rozmiarze: 10

********Dziala konstruktor kopiujacy **********
Nazwa skopiowanego obiektu: .SKOPIOWANY
Zawartosc tablicy w skopiowanym obiekcie: 
Destruktor usuwa obiekt 
Destruktor usuwa obiekt