MeehoweCK

Untitled

Mar 28th, 2020
263
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.89 KB | None | 0 0
  1. // main.cpp
  2. #include <iostream>
  3. #include <cstdlib>
  4. #include <ctime>
  5. #include "Tablica.hpp"
  6. #include "Head.hpp"
  7.  
  8. using namespace std;
  9.  
  10. int main()
  11. {
  12.     srand(static_cast<unsigned>(time(nullptr)));
  13.     int wielkosc_tablicy;
  14.     cin >> wielkosc_tablicy;
  15.     Tablica nasza_tablica(wielkosc_tablicy);
  16.     nasza_tablica.wypisz_tablice();
  17.  
  18.     cout << "\nWpisz wartosc, jaka chcesz dodac do tablicy: ";
  19.     int nowa_wartosc;
  20.     cin >> nowa_wartosc;
  21.     nasza_tablica.dodaj_wartosc(nowa_wartosc);
  22.     nasza_tablica.wypisz_tablice();
  23.  
  24.     cout << "\nWpisz nowy rozmiar dla istniejącej tablicy: ";
  25.     int nowy_rozmiar;
  26.     cin >>nowy_rozmiar;
  27.     nasza_tablica.zmien_rozm(nowy_rozmiar);
  28.     nasza_tablica.wypisz_tablice();
  29.  
  30.     cout <<"\nWpisz rozmiar tablicy, która będzie dodana do istniejącej: ";
  31.     int rozm_dod;
  32.     cin >>rozm_dod;
  33.     Tablica nowa_tablica(rozm_dod);         // tworzymy nową tablicę, która ma zostać dodana
  34.     nasza_tablica.dodaj_tablice(&nowa_tablica);     // dodawanie tablicy
  35.     nasza_tablica.wypisz_tablice();
  36.  
  37.     nasza_tablica.pomnoz_wartosci(2);       // zwiększa wartości wszystkich elementów tablicy x2
  38.     nasza_tablica.wypisz_tablice();
  39.     return 0;
  40. }
  41.  
  42. // Tablica.cpp
  43. #include <cstdlib>
  44. #include <iostream>
  45. #include "Head.hpp"
  46. #include "Tablica.hpp"
  47.  
  48. using namespace std;
  49.  
  50. /*class Tablica
  51. {
  52.     private:
  53.         int* tab;   //zmienne lepiej definiować w privite
  54.         int rozmiar;
  55.     public:
  56.         Tablica(int);
  57.         ~Tablica();
  58.         void dodaj_wartosc(int);    //obiekty lepiej definiowac w public
  59.         void wypisz_tablice();
  60.         void zmien_rozm(int);
  61.         void dodaj_tablice(Tablica*);
  62.         void pomnoz_wartosci(int);
  63. };*/
  64.  
  65. Tablica::Tablica(int wielkosc) : rozmiar(wielkosc) // definicja konstruntora + def. rozmiaru
  66. {
  67.     tab = new int[rozmiar]; // nie trzeba więcej wstawiać int*
  68.     for(int i = 0; i < rozmiar; ++i)
  69.         tab[i] = rand() % (MAKS + 1);
  70. }
  71.  
  72. Tablica::~Tablica()
  73. {
  74.     delete[] tab;
  75.     cout << "Usunieto tablice\n";
  76. }
  77.  
  78. void Tablica::dodaj_wartosc(int wartosc) //nowa wartosc (100)
  79. {
  80.     int* tab1 = new int[rozmiar];
  81.     for(int i = 0; i < rozmiar; ++i)
  82.         tab1[i] = tab[i];
  83.     delete[] tab;
  84.     tab = new int[rozmiar + 1];
  85.     tab[rozmiar] = wartosc;
  86.     for(int i = 0; i < rozmiar; ++i)
  87.         tab[i] = tab1[i];
  88.     delete[] tab1;
  89.     ++rozmiar;  //mam wewnącz klasy dostęp do privite
  90. }
  91.  
  92. void Tablica::zmien_rozm(int rozm2)
  93. {
  94.     if(rozm2 < rozmiar)
  95.     {
  96.         int* temp = new int[rozm2];
  97.         for(int i = 0; i < rozm2; ++i)
  98.             temp[i] = tab[i];
  99.         delete[] tab;
  100.  
  101.         tab = new int[rozm2];
  102.         for(int i = 0; i < rozm2; ++i)
  103.             tab[i] = temp[i];
  104.         delete[] temp;
  105.     }
  106.  
  107.     if(rozm2 > rozmiar)
  108.     {
  109.         int* temp = new int[rozmiar];
  110.         for(int i = 0; i < rozmiar; ++i)
  111.             temp[i] = tab[i];
  112.         delete[] tab;
  113.  
  114.         tab = new int[rozm2];
  115.         for(int i = 0; i < rozmiar; ++i)
  116.             tab[i] = temp[i];
  117.         for(int i = rozmiar; i < rozm2; ++i)
  118.             tab[i] = 0;
  119.         delete[] temp;
  120.     }
  121.     rozmiar = rozm2;
  122. }
  123. void Tablica::wypisz_tablice()
  124. {
  125.     for(int i = 0; i < rozmiar; ++i)
  126.         cout << tab[i] <<'\t';
  127. }
  128.  
  129. void Tablica::dodaj_tablice(Tablica* nowa)
  130. {
  131.     int* temp = new int[rozmiar];               // tworzymy tablicę tymczasową, która będzie przechowywać wartości z tablicy A
  132.     for(int i = 0; i < rozmiar; ++i)
  133.         temp[i] = tab[i];                       // kopiujemy dane z tablicy A do tablicy tymczasowej
  134.     delete[] tab;                               // usuwamy tablicę A
  135.  
  136.     tab = new int[rozmiar + nowa->rozmiar];     // na jej miejsce tworzymy nową, większą o rozmiar tablicy dodawanej (B)
  137.     for(int i = 0; i < rozmiar; ++i)
  138.         tab[i] = temp[i];                       // do nowej tablicy A dodajemy dane z tymczasowej
  139.     delete[] temp;                              // tablica tymczasowa już nie jest potrzebna, usuwamy ją
  140.  
  141.     for(int i = 0; i < nowa->rozmiar; ++i)
  142.         tab[i + rozmiar] = nowa->tab[i];        // do nowej tablicy A dodajemy elementy z tablicy B
  143.     rozmiar += nowa->rozmiar;                   // aktualizujemy rozmiar tablicy (jest większy o rozmiar tablicy B)
  144. }
  145.  
  146. void Tablica::pomnoz_wartosci(int mnoznik)
  147. {
  148.     // miejsce na Twój kod
  149. }
  150.  
  151. // Tablica.hpp
  152. #ifndef TABLICA_H
  153. #define TABLICA_H
  154.  
  155. class Tablica
  156. {
  157.     private:
  158.         int* tab;   //zmienne lepiej definiować w privite
  159.         int rozmiar;
  160.     public:
  161.         Tablica(int);
  162.         ~Tablica();
  163.         void dodaj_wartosc(int);    //obiekty lepiej definiowac w public
  164.         void wypisz_tablice();
  165.         void zmien_rozm(int);
  166.         void dodaj_tablice(Tablica*);
  167.         void pomnoz_wartosci(int);
  168. };
  169.  
  170. #endif /* Tablica_hpp */
  171.  
  172. // Head.hpp
  173. #ifndef Head_hpp
  174. #define Head_hpp
  175.  
  176. const int MAKS = 100;
  177. #endif /* Head_hpp */
Advertisement
Add Comment
Please, Sign In to add comment