# Struktūros: konstruktoriai
# Vaizdo pamoka
# Pavyzdžiai
# Pavyzdys 1
Kodas:
#include <iostream>
using namespace std;
struct automobilis
{
string marke;
string modelis;
int metai;
int rida;
double darbinis_turis;
automobilis(string marke, string modelis, int metai,
int rida, double darbinis_turis)
{
this->marke = marke;
this->modelis = modelis;
this->metai = metai;
this->rida = rida;
this->darbinis_turis = darbinis_turis;
}
void isvedimas()
{
cout << "Automobilio " << marke << " " << modelis << " duomenys\n";
cout << "Metai: " << metai << endl;
cout << "Rida: " << rida << endl;
cout << "Darbinis turis, l: " << darbinis_turis << "\n\n";
}
};
int main()
{
automobilis pirmas = automobilis("Toyota", "Prius", 2015, 201457, 1.2);
automobilis antras = automobilis("Tesla", "S", 2020, 1254, 1.6);
pirmas.isvedimas();
antras.isvedimas();
return 0;
}
Rezultatai:
Automobilio Toyota Prius duomenys
Metai: 2015
Rida: 201457
Darbinis turis, l: 1.2
Automobilio Tesla S duomenys
Metai: 2020
Rida: 1254
Darbinis turis, l: 1.6
# Pavyzdys 2
Nuo praeito pavyzdžio skiriasi tik per konstruktorių.
Kodas:
#include <iostream>
using namespace std;
struct automobilis
{
string marke;
string modelis;
int metai;
int rida;
double darbinis_turis;
automobilis(string mark, string mod, int met, int rid, double darb_turis)
{
marke = mark;
modelis = mod;
metai = met;
rida = rid;
darbinis_turis = darb_turis;
}
void isvedimas()
{
cout << "Automobilio " << marke << " " << modelis << " duomenys\n";
cout << "Metai: " << metai << endl;
cout << "Rida: " << rida << endl;
cout << "Darbinis turis, l: " << darbinis_turis << "\n\n";
}
};
int main()
{
automobilis pirmas = automobilis("Toyota", "Prius", 2015, 201457, 1.2);
automobilis antras = automobilis("Tesla", "S", 2020, 1254, 1.6);
pirmas.isvedimas();
antras.isvedimas();
return 0;
}
Rezultatai:
Automobilio Toyota Prius duomenys
Metai: 2015
Rida: 201457
Darbinis turis, l: 1.2
Automobilio Tesla S duomenys
Metai: 2020
Rida: 1254
Darbinis turis, l: 1.6
# Pavyzdys 3
Kodas:
#include <iostream>
using namespace std;
struct studentas
{
string vardas;
string pavarde;
int amzius;
int pazymiai[100] = { 0 };
int paz_kiekis;
studentas()
{
vardas = "";
pavarde = "";
amzius = 0;
paz_kiekis = 0;
}
studentas(string vardas, string pavarde, int amzius)
{
this->vardas = vardas;
this->pavarde = pavarde;
this->amzius = amzius;
this->paz_kiekis = 0;
}
studentas(string vardas, string pavarde, int amzius,
int pazymiai[], int paz_kiekis)
{
this->vardas = vardas;
this->pavarde = pavarde;
this->amzius = amzius;
for (int i = 0; i < paz_kiekis; i++)
{
this->pazymiai[i] = pazymiai[i];
}
this->paz_kiekis = paz_kiekis;
}
void isvedimas()
{
cout << "--------------------------------" << endl;
cout << "STUDENTO DUOMENYS" << endl;
cout << "Studentas(-e): " << vardas << " " << pavarde << endl;
cout << "Amzius: " << amzius << endl;
cout << "Pazymiai: ";
for (int i = 0; i < paz_kiekis; i++)
{
cout << pazymiai[i] << " ";
}
cout << "\n--------------------------------\n\n";
}
};
int main()
{
studentas pirmas = studentas();
pirmas.isvedimas();
studentas antras = studentas("Tomas", "Tomauskas", 19);
antras.isvedimas();
studentas trecias = studentas("Petras", "Petrauskas", 20,
new int[] {7, 8, 6, 5}, 4);
trecias.isvedimas();
return 0;
}
Rezultatai:
--------------------------------
STUDENTO DUOMENYS
Studentas(-e):
Amzius: 0
Pazymiai:
--------------------------------
--------------------------------
STUDENTO DUOMENYS
Studentas(-e): Tomas Tomauskas
Amzius: 19
Pazymiai:
--------------------------------
--------------------------------
STUDENTO DUOMENYS
Studentas(-e): Petras Petrauskas
Amzius: 20
Pazymiai: 7 8 6 5
--------------------------------
# Pavyzdys 4
Kodas:
#include <iostream>
using namespace std;
struct zmogus
{
string vardas;
string pavarde;
double etatas;
zmogus()
{
vardas = "";
pavarde = "";
etatas = 0;
}
zmogus(string vard, string pav, double etat)
{
vardas = vard;
pavarde = pav;
etatas = etat;
}
void isvedimas()
{
cout << vardas << " " << pavarde << ", dirba "
<< etatas << " etatu" << endl;
}
};
struct projektas
{
string pavadinimas;
zmogus atsakingas_zmogus;
int biudzetas;
projektas(string pavadinimas, zmogus atsakingas, int biudzetas)
{
this->pavadinimas = pavadinimas;
this->atsakingas_zmogus = atsakingas;
this->biudzetas = biudzetas;
}
void isvedimas()
{
cout << "Projektas " << pavadinimas << ", kurio biudzetas "
<< biudzetas << " eur., turi atsakinga asmeni:\n";
atsakingas_zmogus.isvedimas();
cout << endl;
}
};
int main()
{
projektas laivas = projektas(
"Laivas laivelis",
zmogus("Ignas", "Ignavicius", 1),
20000);
laivas.isvedimas();
return 0;
}
Rezultatai:
Projektas Laivas laivelis, kurio biudzetas 20000 eur., turi atsakinga asmeni:
Ignas Ignavicius, dirba 1 etatu
# Užduotys
# Užduotis 1
Papildykite žemiau nurodytą struktūrą su konstruktoriumi, kuris leistų į objektą sukelti visus reikiamus duomenis:
struct autobusas
{
string modelis;
int vietu_skaicius;
int didziausias_greitis;
double darbinis_turis;
void isvedimas()
{
cout << "--------------------\n";
cout << "Autobuso duomenys:\n"
<< "Modelis: " << modelis << endl
<< "Vietu skaicius: " << vietu_skaicius << endl
<< "Didziausias greitis: " << didziausias_greitis << " km/h\n"
<< "Darbinis turis: " << darbinis_turis << " l\n";
cout << "--------------------\n\n";
}
};
Susikurkite kelis objektus, kurie panaudotų aprašytą konstruktorių.
Išveskite šių sukurtų objektų informaciją, tam galite panaudoti jau aprašytą išvedimo funkciją.
# Užduotis 2
Papildykite žemiau nurodytą struktūrą šiais konstruktoriais:
- Tuščias konstruktorius, kuris negauna jokių duomenų, tačiau nustato numatytąsias reikšmes kintamiesiems.
- Konstruktorių, kuris gauna tik pavadinimą ir kainą.
- Konstruktorių, kuris gauna visus struktūroje esančius duomenis (pavadinimas kaina, kiekiai sandėliuose, sandėlių kiekis).
struct preke
{
string pavadinimas;
double kaina;
int kiekiai_sandeliuose[100] = { 0 };
int sandeliu_kiekis;
void isvedimas()
{
cout << "----------------------------\n";
cout << "PREKES DUOMENYS\n";
cout << "Preke " << pavadinimas << " kainuoja " << kaina << " eur./vnt.\n";
cout << "Prekes likuciai sandeliuose: ";
for (int i = 0; i < sandeliu_kiekis; i++)
{
cout << kiekiai_sandeliuose[i] << " vnt, ";
}
cout << "\n----------------------------\n";
}
};
Susikurkite kelis objektus, su kuriais panaudotumėte visus aprašytus konstruktorius.
Išveskite šių sukurtų objektų informaciją, tam galite panaudoti jau aprašytą išvedimo funkciją.
# Užduotis 3
Papildykite žemiau nurodytą struktūrą bent 3 savo nuožiūra aprašytais konstruktoriais.
struct knyga
{
string pavadinimas;
string autorius;
int puslapiu_sk;
double kaina;
int metai;
void isvedimas()
{
cout << "KNYGOS INFORMACIJA\n";
cout << "Knyga: " << pavadinimas << endl;
cout << "Autorius: " << autorius << endl;
cout << "Puslapiu skaicius: " << puslapiu_sk << endl;
cout << "Kaina: " << kaina << " eur." << endl;
cout << "Metai: " << metai << "\n\n";
}
};
Susikurkite kelis objektus, su kuriais panaudotumėte visus aprašytus konstruktorius.
Išveskite šių sukurtų objektų informaciją, tam galite panaudoti jau aprašytą išvedimo funkciją.