# Struktūros: objektų masyvai (informacijas įvedimas ir gavimas / išvedimas)
# Vaizdo pamoka
# Pavyzdžiai
# Pavyzdys 1
Kodas:
#include <iostream>
#include <iomanip>
using namespace std;
struct zmogus
{
string vardas;
int amzius;
double ugis;
};
int main()
{
// duomenys
zmogus zmones[10];
int kiek;
// ivedimas
cout << "Kiek zmoniu duomenu norite suvesti? ";
cin >> kiek;
cout << endl;
for (int i = 0; i < kiek; i++)
{
cout << i + 1 << "-asis zmogus" << endl;
cout << "Vardas: ";
cin >> zmones[i].vardas;
cout << "Amzius: ";
cin >> zmones[i].amzius;
cout << "Ugis: ";
cin >> zmones[i].ugis;
cout << endl;
}
// isvedimas
cout << "+-----------------+--------+---------+\n";
cout << "| Vardas | Amzius | Ugis, m |\n";
cout << "+-----------------+--------+---------+\n";
for (int i = 0; i < kiek; i++)
{
cout << "| " << setw(15) << left << zmones[i].vardas << " | "
<< setw(6) << left << zmones[i].amzius << " | "
<< setw(7) << left << zmones[i].ugis << " |\n";
}
cout << "+-----------------+--------+---------+\n";
return 0;
}
Rezultatai:
Kiek zmoniu duomenu norite suvesti? 4
1-asis zmogus
Vardas: Indre
Amzius: 25
Ugis: 1.65
2-asis zmogus
Vardas: Paulius
Amzius: 24
Ugis: 1.78
3-asis zmogus
Vardas: Julija
Amzius: 30
Ugis: 1.72
4-asis zmogus
Vardas: Ignas
Amzius: 22
Ugis: 1.8
+-----------------+--------+---------+
| Vardas | Amzius | Ugis, m |
+-----------------+--------+---------+
| Indre | 25 | 1.65 |
| Paulius | 24 | 1.78 |
| Julija | 30 | 1.72 |
| Ignas | 22 | 1.8 |
+-----------------+--------+---------+
# Pavyzdys 2
Praeito pavyzdžio kodas išskaidytas į funkcijas.
Kodas:
#include <iostream>
#include <iomanip>
using namespace std;
struct zmogus
{
string vardas;
int amzius;
double ugis;
};
void ivedimas(zmogus zmones[], int & kiekis)
{
cout << "Kiek zmoniu duomenu norite suvesti? ";
cin >> kiekis;
cout << endl;
for (int i = 0; i < kiekis; i++)
{
cout << i + 1 << "-asis zmogus" << endl;
cout << "Vardas: ";
cin >> zmones[i].vardas;
cout << "Amzius: ";
cin >> zmones[i].amzius;
cout << "Ugis: ";
cin >> zmones[i].ugis;
cout << endl;
}
}
void isvedimas(zmogus zmones[], int kiekis)
{
cout << "+-----------------+--------+---------+\n";
cout << "| Vardas | Amzius | Ugis, m |\n";
cout << "+-----------------+--------+---------+\n";
for (int i = 0; i < kiekis; i++)
{
cout << "| " << setw(15) << left << zmones[i].vardas << " | "
<< setw(6) << left << zmones[i].amzius << " | "
<< setw(7) << left << zmones[i].ugis << " |\n";
}
cout << "+-----------------+--------+---------+\n";
}
int main()
{
zmogus zmones[10];
int kiek = 0;
ivedimas(zmones, kiek);
isvedimas(zmones, kiek);
return 0;
}
Rezultatai:
Kiek zmoniu duomenu norite suvesti? 3
1-asis zmogus
Vardas: Gintaras
Amzius: 22
Ugis: 1.8
2-asis zmogus
Vardas: Paulina
Amzius: 21
Ugis: 1.75
3-asis zmogus
Vardas: Ignas
Amzius: 23
Ugis: 1.9
+-----------------+--------+---------+
| Vardas | Amzius | Ugis, m |
+-----------------+--------+---------+
| Gintaras | 22 | 1.8 |
| Paulina | 21 | 1.75 |
| Ignas | 23 | 1.9 |
+-----------------+--------+---------+
# Pavyzdys 3
Kodas:
#include <iostream>
#include <iomanip>
using namespace std;
struct automobilis
{
string marke;
string modelis;
int rida;
int metai;
double darbinis_turis;
automobilis(string marke, string modelis, int rida,
int metai, double darbinis_turis)
{
this->marke = marke;
this->modelis = modelis;
this->rida = rida;
this->metai = metai;
this->darbinis_turis = darbinis_turis;
}
};
int main()
{
automobilis automobiliai[] = {
automobilis("Tesla", "S", 20145, 2017, 1.8),
automobilis("Audi", "A4", 35488, 2019, 1.6),
automobilis("BWM", "Emke", 64554, 2002, 2.2),
automobilis("Opel", "Astra", 320719, 2008, 1.8)
};
int kiek = 4;
cout << setw(15) << left << "Marke" << " "
<< setw(15) << "Modelis" << " "
<< setw(8) << "Metai" << " "
<< setw(8) << "Rida" << " "
<< "Darbinis turis, l" << endl;
for (int i = 0; i < kiek; i++)
{
cout << setw(15) << left << automobiliai[i].marke << " "
<< setw(15) << automobiliai[i].modelis << " "
<< setw(8) << automobiliai[i].metai << " "
<< setw(8) << automobiliai[i].rida << " "
<< automobiliai[i].darbinis_turis << endl;
}
return 0;
}
Rezultatai:
Marke Modelis Metai Rida Darbinis turis, l
Tesla S 2017 20145 1.8
Audi A4 2019 35488 1.6
BWM Emke 2002 64554 2.2
Opel Astra 2008 320719 1.8
# Pavyzdys 4
Kodas:
#include <iostream>
#include <iomanip>
using namespace std;
struct preke
{
string pavadinimas;
double kaina;
int kiekis;
preke()
{
pavadinimas = "";
kaina = 0;
kiekis = 0;
}
preke(string pavadinimas, double kaina, int kiekis)
{
this->pavadinimas = pavadinimas;
this->kaina = kaina;
this->kiekis = kiekis;
}
void isvesti()
{
cout << setw(20) << left << pavadinimas << " "
<< kaina << " eur. "
<< kiekis << " vnt." << endl;
}
};
struct parduotuve
{
string pavadinimas;
preke prekes[100];
int prekiu_kiekis;
parduotuve(string pavadinimas, preke prekes[], int prekiu_kiekis)
{
this->pavadinimas = pavadinimas;
for (int i = 0; i < prekiu_kiekis; i++)
{
this->prekes[i] = prekes[i];
}
this->prekiu_kiekis = prekiu_kiekis;
}
void isvedimas()
{
cout << "Parduotuves " << pavadinimas << " prekes:" << endl;
for (int i = 0; i < prekiu_kiekis; i++)
{
prekes[i].isvesti();
}
}
};
int main()
{
parduotuve maxima(
"Maxima",
new preke[]{
preke("Piestukas", 1.49, 158),
preke("Flomasteriai", 1.49, 24),
preke("Sasiuvinys", 1.99, 487),
preke("Trintukas", 0.49, 24),
},
4);
maxima.isvedimas();
return 0;
}
Rezultatai:
Parduotuves Maxima prekes:
Piestukas 1.49 eur. 158 vnt.
Flomasteriai 1.49 eur. 24 vnt.
Sasiuvinys 1.99 eur. 487 vnt.
Trintukas 0.49 eur. 24 vnt.
# Pavyzdys 5
Kodas:
#include <fstream>
using namespace std;
struct studentas
{
string vardas;
string pavarde;
int amzius;
int pazymiai[50];
int paz_kiekis;
bool ar_visi_teigiami;
};
void nuskaitymas(studentas studentai[], int & kiekis)
{
ifstream failas("duomenys.txt");
kiekis = 0;
while (!failas.eof())
{
failas >> studentai[kiekis].vardas
>> studentai[kiekis].pavarde
>> studentai[kiekis].amzius;
failas >> studentai[kiekis].paz_kiekis;
studentai[kiekis].ar_visi_teigiami = true;
for (int i = 0; i < studentai[kiekis].paz_kiekis; i++)
{
failas >> studentai[kiekis].pazymiai[i];
if (studentai[kiekis].pazymiai[i] < 5)
{
studentai[kiekis].ar_visi_teigiami = false;
}
}
kiekis++;
}
failas.close();
}
void isvedimas(studentas studentai[], int kiekis)
{
ofstream rez("rezultatai.txt");
for (int i = 0; i < kiekis; i++)
{
rez << i + 1 << "-asis studentas(-e)" << endl;
rez << "Vardas ir pavarde: " << studentai[i].vardas
<< " " << studentai[i].pavarde << endl;
rez << "Azmius: " << studentai[i].amzius << endl;
rez << "Pazymiai: ";
for (int j = 0; j < studentai[i].paz_kiekis; j++)
{
rez << studentai[i].pazymiai[j] << " ";
}
rez << endl;
rez << "Ar visi pazymiai teigiami? "
<< (studentai[i].ar_visi_teigiami ? "taip" : "ne");
rez << "\n\n";
}
rez.close();
}
int main()
{
studentas studentai[20];
int kiekis;
nuskaitymas(studentai, kiekis);
isvedimas(studentai, kiekis);
return 0;
}
Tomas Tomauskas 20 3 8 7 9
Greta Gretuskyte 19 4 9 7 9 8
Povilas Povilauskas 21 3 8 7 8
Inga Ignauskyte 21 5 8 7 4 7 6
1-asis studentas(-e)
Vardas ir pavarde: Tomas Tomauskas
Azmius: 20
Pazymiai: 8 7 9
Ar visi pazymiai teigiami? taip
2-asis studentas(-e)
Vardas ir pavarde: Greta Gretuskyte
Azmius: 19
Pazymiai: 9 7 9 8
Ar visi pazymiai teigiami? taip
3-asis studentas(-e)
Vardas ir pavarde: Povilas Povilauskas
Azmius: 21
Pazymiai: 8 7 8
Ar visi pazymiai teigiami? taip
4-asis studentas(-e)
Vardas ir pavarde: Inga Ignauskyte
Azmius: 21
Pazymiai: 8 7 4 7 6
Ar visi pazymiai teigiami? ne
// Make sure to add code blocks to your code group
# Užduotys
# Užduotis 1
Sukurkite struktūrą knygos duomenims saugoti, kurioje būtų saugoma ši informacija:
- Pavadinimas.
- Autorius.
- Kaina.
- Puslapių skaičius.
- Žanras.
Šioje struktūroje sukurkite konstruktorių, kuris leistų į objektą sukelti norimus duomenis.
Susikurkite šios struktūros objektų masyvą ir jį užpildykite duomenimis, pasinaudojant struktūros konstruktoriumi.
# Užduotis 2
Sukurkite struktūrą darbuotojo duomenims saugoti, kurioje būtų saugoma ši informacija:
- Vardas.
- Pavardė.
- Atlyginimas.
- Etatas.
- Pareigos.
Sukurkite dvi funkcijas ne struktūroje:
- Įvedimo funkcija, kurios pagalba vartotojas galėtų suvesti norimą kiekį darbuotojų ir informacijos apie juos.
- Išvedimo funkcija, kuri išvestų visų turimų darbuotojų duomenis lentelės pavidalu.
Susikurkite šios struktūros objektų masyvą. Iškvieskite turimas įvedimo ir išvedimo funkcijas, perduodant turimą objektų masyvą ir kiekio kintamąjį.
# Užduotis 3
Antroje užduotyje parašytą programą pritaikykite darbui su failais.
# Užduotis 4 (sudėtingesnė)
Sukurkite struktūrą šiems studento duomenims saugoti:
- Vardas.
- Pavardė.
- Amžius.
- Pažymiai.
Sukurkite struktūrą šiems grupės duomenims saugoti:
- Grupės kodas.
- Aukštoji mokykla.
- Studijų programa.
- Studentai (studentų objektų masyvas).
Sukurkite šias dvi atskiras ir ne struktūrose esančias funkcijas:
- Duomenų įvedimas ar nuskaitymas (pasirinktinai: suveda vartotojas konsolės pagalba arba nuskaitymas iš failo).
- Duomenų išvedimas (pasirinktai: išvedama į konsolę norima forma arba išvedama į failą).
Sukurkite dviejų grupių objektus. Juos užpildykite duomenimis, bei išveskite (pasinaudojant turimomis įvedimo ir išvedimo funkcijomis).