SHARE
TWEET

Untitled

a guest Mar 26th, 2020 71 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <string>   //import bibliotek
  3.  
  4. using namespace std;
  5.  
  6. class Bohater { //definicja klasy "Bohater"
  7.   private:      //prywatne pola
  8.     string pseudonim;  
  9.     string klasa;
  10.     int sila_ataku;
  11.     static int licznik; //licznik obiektów klasy "Bohater"
  12.  
  13.   public:   //publiczne pola i metody
  14.     Bohater(){ //domyślny konstruktor
  15.       pseudonim = "Brak";
  16.       klasa = "Brak";
  17.       sila_ataku = 0;
  18.       licznik++;    //inkrementacja licznika
  19.     }
  20.  
  21.     Bohater(const Bohater &Bohater, int sila_ataku) { //konstruktor kopiujacy
  22.       pseudonim = Bohater.pseudonim;
  23.       klasa = Bohater.klasa;
  24.       this -> sila_ataku = sila_ataku;  //ustawienie siły obiektu na wartość podaną jako parametr konstruktora kopiującego
  25.       licznik++;
  26.     }    
  27.  
  28.     Bohater(string pseudonim, string klasa, int sila_ataku) {   //konstruktor wieloargumentowy nadający wartość pól klasy
  29.       this -> pseudonim = pseudonim;
  30.       this -> klasa = klasa;
  31.       this -> sila_ataku = sila_ataku;
  32.       licznik++;
  33.     }
  34.     string get_wyswietlanie_pseudonimu() { //metoda zwracajaca wartosc pola "pseudonim"
  35.       return pseudonim;
  36.     }
  37.     string get_wyswietlanie_klasy() { //metoda zwracajaca wartosc pola "klasa"
  38.       return klasa;
  39.     }
  40.     int get_wyswietlanie_sily() { //metoda zwracajaca wartosc pola "atak"
  41.       return sila_ataku;
  42.     }
  43.     static int get_wyswietlanie_licznika(){ //statyczna metoda zwracajaca wartosc pola "licznik"
  44.       return licznik;
  45.     }
  46.     void set_nowa_sila(int s) { //metoda umozliwiajaca zmiane wartosci pola sila_ataku
  47.       sila_ataku = s;
  48.     }
  49.     void set_nowy_pseudonim(string p) { //metoda umozliwiajaca zmiane wartosci pola pseudonim
  50.       pseudonim = p;
  51.     }
  52.  
  53.     void wyswietlanie_wartosci();   //deklaracja metody wyświetlającej wartości pól klasy
  54. };
  55. void Bohater::wyswietlanie_wartosci() { //definicja metody poza ciałem klasy
  56.         cout << "Pseudonim bohatera: " << get_wyswietlanie_pseudonimu() << endl;
  57.         cout << "Klasa bohatera: " << get_wyswietlanie_klasy() << endl;
  58.         cout << "Sila ataku bohatera: " << get_wyswietlanie_sily() << endl;
  59.     }
  60.  
  61. int Bohater::licznik = 0;   //definicja statycznego pola "licznik" klasy "Bohater"
  62.  
  63.  
  64. int main() {
  65.  
  66.   Bohater* bohater1 = new Bohater("Zawisza Czarny", "Rycerz", 0); //deklaracja dynamicznego obiektu typu "Bohater", przy użyciu konstruktora wieloargumentowego
  67.  
  68.   bohater1 -> wyswietlanie_wartosci();
  69.  
  70.   bohater1 -> set_nowa_sila(5); bohater1 -> wyswietlanie_wartosci(); //zmiana wartosci pola sila_ataku oraz ponowne wypisanie wartosci
  71.  
  72.   Bohater** tab2d = new Bohater*[2]; //utworzenie dynamicznej tablicy obiektow
  73.   for(int i = 0; i < 2; i++){
  74.     tab2d[i] = new Bohater[2];
  75.   }
  76.  
  77.   for(int i = 0; i < 2; i++){   //przypisywanie wartości pól obiektom w tablicy
  78.     for(int j = 0; j < 2; j++){
  79.       tab2d[i][j].set_nowy_pseudonim("pseudonim" + to_string(i));
  80.       tab2d[i][j].set_nowa_sila(i * 2 + j);
  81.     }
  82.   }
  83.  
  84.   int suma = 0;
  85.  
  86.   for(int i = 0; i < 2; i++){   //sumowanie i wyświetlanie wartości pola "siła" obiektów w tablicy
  87.     for(int j = 0; j < 2; j++){
  88.         suma += tab2d[i][j].get_wyswietlanie_sily();
  89.         cout << tab2d[i][j].get_wyswietlanie_pseudonimu() << " ma sile rowna " << tab2d[i][j].get_wyswietlanie_sily() << endl;
  90.     }
  91.   }
  92.  
  93.   cout << "Suma sil: " << suma << endl;
  94.   cout << "Licznik: " << Bohater::get_wyswietlanie_licznika() << endl;  //wyświetlenie licznika obiektów klasy "Bohater"
  95.  
  96.   for(int i = 0; i < 2; i++) delete[] tab2d[i]; \\usuwanie dynamicznie utworzonych obiektów
  97.   delete[] tab2d;
  98.   cout << "Licznik: " << Bohater::get_wyswietlanie_licznika() << endl;
  99.  
  100.   return 0;
  101. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top