Dynamické vytváranie objektov

Definujte triedu Tovar s 1 atribútom (pocet) a 1 metódou (ExpedujTovar()). Definujte statické a dynamické pole tovarov.

#include <iostream>
using namespace std;

class Tovar
{
int pocet;
public:
Tovar(int p = 0){
pocet = p;
}
void ExpedujTovar() {
// vykonaj procedúru expedície tovaru k zákazníkovi
cout << "Expedujem tovar ... " << endl;
}
};
void Expeduj(Tovar* t){
for(int i=0; i<20; i++)
t[i].ExpedujTovar();
}
int main()
{
Tovar Sklad1[20]; // pole 20 tovarov statické
Expeduj(Sklad1);

Tovar Sklad2[3] = { Tovar(5), Tovar(10), Tovar(15)}; // pole 3 tovarov
Expeduj(Sklad2);

Tovar *pSklad = new Tovar[10]; // pole 10 tovarov dynamické

// ďalšia činnosť
delete[] pSklad;
return 0;
}


Príklad 5.2 Modifikujte príklad 3.3 tak, aby ste použili pre prácu s reťazcom triedu string.

#include <iostream>
#include <string>
using namespace std;

class osoba
{
private:
int vek;
float plat;
string meno; //atributy
protected:
public :
osoba(string meno, int vek) { //inline parametricky konstruktor
this->plat = 0;
this->vek = vek;
this->meno = meno;
}
void vypis() { //metoda
cout << "Zamestanec " <<this->meno << " vek "<< this->vek<<endl ;
cout << "Vyska platu " << this->plat<< endl;
}

void zvys_plat(float hodnota){ //metoda
this->plat += hodnota ;
}

~osoba(){ // destruktor
cout << "destruktor"<< endl;
}

osoba(osoba& clovek){ //copy konstruktor
this->plat = clovek.plat;
this->vek = clovek.vek;
this->meno = clovek.meno + "COPY";
}

string GetMeno(){ // pristupova metoda
return this->meno;
}
};

void funkcia(osoba x) // globalna funkcia, parameter hodnotou
{
x.vypis();
}

main()
{
osoba X("Katka", 20);

X.vypis(); // Katka 20

osoba *pX;

pX = new osoba(X);

pX->zvys_plat(15000);
pX->vypis(); // KatkaCOPY
delete pX;

osoba Y("Karol",30);
Y.vypis(); // Karol 30
funkcia(Y); // KarolCOPY
return 0;
}














Príklad 5.3 Načítajte textový súbor do pamäti. Použitie preddefinované triedy string a vector.

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;

int main(){
vector<string> v;
ifstream in("subor.txt");

string riadok;

while (getline(in, riadok))
v.push_back(riadok); // vlozenie riadku do pola

// vypis cisla riadku a jeho obsah
for(int i=0; i < v.size(); i++)
cout << i << ": " << v[i] << endl;
}



Príklad 5.4 Spočítajte výskyt zadaného slova v textovom súbore. Použitie preddefinované triedy string a vector.

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;

int main(){
vector<string> words;
ifstream in("vyskyt.cpp");

string word;
int pocet = 0;
while (in >> word)
words.push_back(word); // nacitanie suboru po slovach

for(int i=0; i < words.size(); i++)
if (words[i] == "#include") // hladane slovo v subore
pocet++;
cout << pocet << endl;











objektu triedy Matica a vektora.

#include <iostream>
#include <vector>
using namespace std;

class Matica{
int m[2][3];
public:
Matica(){ // konštruktor inicializuje maticu typu 2x3
for(int i = 0; i < 2; i++)
for (int j = 0; j < 3; j++)
m[i][j] = i + j + 1;
}
int getPrvok(int i, int j){
return m[i][j];
}
void setPrvok(int i, int j){
m[i][j]= i+j;
}
};

vector<int> nasob(Matica& m, vector<int>& v){
vector<int> vysledok;
for(int i = 0; i < 2; i++)
vysledok.push_back(0); // nulovanie vektora pre vysledok nasobenia


for(i = 0; i < 2; i++)
for (int j = 0; j < 3; j++) // nasobenie matice m a vektora v
vysledok[i] += m.getPrvok(i,j) * v[j];
return vysledok;
}

int main()
{
Matica m; // objekt triedy Matica
vector<int> v; // vektor v
for(int i = 0; i < 2; i++)
v.push_back(i + 1); // inicializacia vektora v = [ ]
vector<int> r;
r = nasob(m,v); // nasobenie matice typu 2x3 vektorom 3
for(i = 0; i < 2; i++)
cout << r[i] << " " ; // vypis vysledku nasobenia r = [ ]

}