PA1 2012 RD Atviroji Klase

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

P175B117 Programavimo vadas Atviroji klas

P1. Atviroji klas


Susipainsite su:
atvirosios klass (duomenys neapsaugoti) duomen tipu ir objektu, kaip tos klass kintamuoju;
duomen masyvo struktra ir masyvo tipo kintamuoju, kuriame bus saugomas objekt rinkinys;
duomen vedimu i tekstinio failo;
objekt masyvo reikmi spausdinimu lentele tekstin fail;
funkcijomis, grinaniomis rezultatus per vard;
funkcijomis, grinaniomis rezultatus per parametrus;
funkcijomis, kuri parametras yra masyvas;
sumos, kiekio, aritmetinio vidurkio skaiiavimo algoritmais.

P1.1. Viena klas

Viena klas, keli objektai.


Reikmi priskyrimas, skaiiavimai, paieka.
Uduotis. Lietuvos keliai.
Duoti trij Lietuvos keli duomenys:
1) pavadinimas: "Kaunas - Vilnius",
ilgis: 105,0 km,
leistinas greitis: 110 km/val.;
2) pavadinimas: "Kaunas - Alytus",
ilgis: 65,6 km,
leistinas greitis: 90 km/val.;
3) pavadinimas: "Vilnius - Panevys",
ilgis: 136,0 km,
leistinas greitis: 120 km/val.
Uraykite atvirj klas kelio duomenims (pavadinimas, ilgis, leistinas greitis) saugoti ir ios klass
objektus aukiau nurodyt keli duomenims saugoti. Paraykite program, kuri rast:
per kiek laiko nuvaiuosime i Alytaus Panev, jei vaiuosime leistinu greiiu marrutu
Alytus - Kaunas - Vilnius Panevys;
kuris kelias yra ilgiausias (nurodyti kelio pavadinim).

Pradiniai duomenys ir rezultatai.

Pradiniai duomenys
1) pavadinimas: "Kaunas - Vilnius", ilgis: 105,0 km, leistinas greitis: 110 km/val.;
2) pavadinimas: "Kaunas - Alytus", ilgis: 65,6 km, leistinas greitis: 90 km/val.;
3) pavadinimas: "Vilnius - Panevys", ilgis: 136,0 km, leistinas greitis: 120 km/val.
Rezultatai
I Alytaus Panev nuvaiuosime per 2.81677 val.
Ilgiausias kelias: Vilnius - Panevys

Sprendimo eiga.

Sukuriama atviroji klas vieno kelio duomenims saugoti.


Pagrindinje funkcijoje main() skelbiami trys uraytos klass objektai, skirti trij Lietuvos keli
duomenims saugoti.
Suteikiamos reikms objekt kintamiesiems.
Randamas laikas, per kur galima nuvaiuoti i Alytaus Panev, vaiuojant leistinu greiiu
marrutu Alytus - Kaunas - Vilnius - Panevys.
Randamas ilgiausio kelio pavadinimas.

Pirmas ingsnis.
Sukurkite klas, skirt kelio duomenims saugoti.
class Kelias
{
public:
string pav;
// kelio pavadinimas
double ilgis;
// kelio ilgis
int
lgr;
// leistinas greitis km/val
};

Paraykite main() funkcij, kurioje bt aprayti reikalingi objektai ir suteiktos reikms i


objekt kintamiesiems. Spausdinkite objekt duomenis.

int main()

P175B117 Programavimo vadas Atviroji klas


{
setlocale(LC_ALL, "Lithuanian");
// Duomen priskyrimas ir spausdinimas
Kelias k1, k2, k3;
// objektai
k1.pav = "Kaunas - Vilnius";
k1.ilgis = 105.0; k1.lgr = 110;
k2.pav = "Kaunas - Alytus";
k2.ilgis = 65.6; k2.lgr = 90;
k3.pav = "Vilnius - Panevys"; k3.ilgis = 136.0; k3.lgr = 120;
cout << "Keliai:" << endl;
cout << k1.pav << ", " << k1.ilgis << ", " << k1.lgr << endl;
cout << k2.pav << ", " << k2.ilgis << ", " << k2.lgr << endl;
cout << k3.pav << ", " << k3.ilgis << ", " << k3.lgr << endl;
cout << "-------------------------------\n";
cout << "Programa baig darb\n";
return 0;
}

Patikrinkite programos veikim. Ekrane turite matyti:


Keliai:
Kaunas Vilnius, 105, 110
Kaunas - Alytus, 65.6, 90
Vilnius Panevys, 136, 120

Antras ingsnis.
Papildykite program vaiavimo laiko skaiiavimo ir spausdinimo veiksmais.
// Vaiavimo laiko radimas
double laikas = k2.ilgis / k2.lgr + k1.ilgis / k1.lgr + k3.ilgis / k3.lgr;
cout << "I Alytaus Panev nuvaiuosime per " << laikas
<< " val." << endl;
Patikrinkite programos veikim. Ekrane turite matyti:
Keliai:
Kaunas Vilnius, 105, 110
Kaunas - Alytus, 65.6, 90
Vilnius Panevys, 136, 120
I Alytaus Panev nuvaiuosime per 2.81677 val.

Treias ingsnis.
Papildykite program ilgiausio kelio radimo ir spausdinimo veiksmais.
// Ilgiausio kelio radimas
string maxPav = k1.pav;
double maxIlgis = k1.ilgis;
if (k2.ilgis > maxIlgis) {
maxPav = k2.pav;
maxIlgis = k2.ilgis;
}
if (k3.ilgis > maxIlgis) {
maxPav = k3.pav;
maxIlgis = k3.ilgis;
}
cout << "Ilgiausias kelias: " << maxPav << endl;
Patikrinkite programos veikim. Ekrane turite matyti:
Keliai:
Kaunas Vilnius, 105, 110
Kaunas - Alytus, 65.6, 90
Vilnius Panevys, 136, 120
I Alytaus Panev nuvaiuosime per 2.81677 val.
Ilgiausias kelias: Vilnius - Panevys

Programos papildymas.
Papildykite program veiksmais, nustataniais, kuriame kelyje leistinas greitis yra maiausias.
Savarankiko darbo uduotis.
Yra keturi draugai. inomi kiekvieno j vardas, gis, svoris. Sukurkite klas vieno asmens duomenims
saugoti. Paraykite program, kuri rast vidutin vieno vaikino svor ir kuris vaikinas emiausias.

P175B117 Programavimo vadas Atviroji klas

P1.2. Dvi klass

Skirting klasi objektai.


Reikmi vedimas klaviatra. Skaiiavimai.
Uduotis. Kelions kaina.
Duoti Lietuvos keli duomenys:
1) pavadinimas: "Kaunas - Vilnius",
ilgis: 105,0 km,
leistinas greitis: 110 km/val.;
2) pavadinimas: "Kaunas - Alytus",
ilgis: 65,6 km,
leistinas greitis: 90 km/val.;
3) pavadinimas: "Vilnius - Panevys",
ilgis: 136,0 km,
leistinas greitis: 120 km/val.
Duoti automobili duomenys:
1) pavadinimas: "Opel Meriva",
degal tipas: benzinas,
degal snaudos 100 km: 7,5 l;
2) pavadinimas: "Volkswagen Golf",
degal tipas: dyzelinas,
degal snaudos 100 km: 6,3 l.
Sukurkite dvi atvirsias klases ir i klasi objektus aukiau nurodyt keli ir automobili duomenims
saugoti.
Kiek kainuos degalai keliaujant marrutu Alytus - Kaunas - Vilnius - Panevys kiekvienu automobiliu?
Benzino ir dyzelino kainos kelions dien yra inomos ir vedamos klaviatra.

Pradiniai duomenys ir rezultatai.


Pradiniai duomenys
Keliai:
1) pavadinimas: "Kaunas - Vilnius", ilgis: 105,0 km, leistinas greitis: 110 km/val.;
2) pavadinimas: "Kaunas - Alytus", ilgis: 65,6 km, leistinas greitis: 90 km/val.;
3) pavadinimas: "Vilnius - Panevys", ilgis: 136,0 km, leistinas greitis: 120 km/val.
Automobiliai:
1) pavadinimas: "Opel Meriva", degal tipas: benzinas, degal snaudos 100 km: 7,5 l;
2) pavadinimas: "Volkswagen Golf", degal tipas: dyzelinas, degal snaudos 100 km: 6,3 l.
1 litro benzino kaina: 4,75 Lt, 1 litro dyzelino kaina: 4,45 Lt.
Rezultatai
Automobiliu Opel Meriva i Alytaus Panev nuvaiuosime u 109.23 Lt.
Automobiliu Volkswagen Golf i Alytaus Panev nuvaiuosime u 85.96 Lt.

Sprendimo eiga.

Nukopijuojama P1.1 uduoties programa.


Sukuriama nauja klas automobilio duomenims saugoti.
Pagrindinje funkcijoje main() skelbiami du nauji automobilio klass objektai.
Suteikiamos reikms objekt kintamiesiems.
Klaviatra vedamos benzino ir dyzelino kainos.
Randama, kiek kainuos kelion i Alytaus Panev per Kaun ir Vilni pirmuoju automobiliu.
Randama, kiek kainuos kelion i Alytaus Panev per Kaun ir Vilni antruoju automobiliu.

Pirmas ingsnis.

Nukopijuokite P1.1 program. Paalinkite i programos veiksmus, surandanius laik, per kur
galima nuvaiuoti i Alytaus Panev, ir ilgiausio kelio pavadinim.

Antras ingsnis.

Sukurkite klas, skirt automobilio duomenims saugoti.

class Auto
{
public:
string pav;
string degalai;
double snaudos;
};

// automobilio pavadinimas
// degal tipas
// kuro snaudos 100 km

Papildykite main() funkcij dviej objekt, saugani automobili duomenis, apraais. Suteikite
reikm i objekt kintamiesiems ir spausdinkite objekt duomenis.

// Automobilius apraantys objektai


Auto a1, a2;
a1.pav = "Opel Meriva";
a1.degalai = "benzinas";
a2.pav = "Volkswagen Golf";
a2.degalai = "dyzelinas";

a1.snaudos = 7.5;
a2.snaudos = 6.3;

P175B117 Programavimo vadas Atviroji klas


cout << "Automobiliai:" << endl;
cout << a1.pav << ", " << a1.degalai << ", " << a1.snaudos << endl;
cout << a2.pav << ", " << a2.degalai << ", " << a2.snaudos << endl;

Patikrinkite programos veikim. Ekrane turite matyti:


Keliai:
Kaunas Vilnius, 105, 110
Kaunas - Alytus, 65.6, 90
Vilnius Panevys, 136, 120
Automobiliai:
Opel Meriva, benzinas, 7.5
Volkswagen Golf, dyzelinas, 6.3

Treias ingsnis.

Papildykite program kintamaisiais, kuriuose bt saugomos benzino ir dyzelino kainos. veskite i


kintamj reikmes klaviatra.

// Degal kain vedimas klaviatra


double benzKaina, dyzKaina;
cout << "Kiek kainuoja 1 litras benzino? ";
cout << "Kiek kainuoja 1 litras dyzelino? ";

cin >> benzKaina;


cin >> dyzKaina;

Patikrinkite programos veikim. Ekrane turite matyti:


Keliai:
Kaunas Vilnius, 105, 110
Kaunas - Alytus, 65.6, 90
Vilnius Panevys, 136, 120
Automobiliai:
Opel Meriva, benzinas, 7.5
Volkswagen Golf, dyzelinas, 6.3
Kiek kainuoja 1 litras benzino? 4.75
Kiek kainuoja 1 litras dyzelino? 4.45

Ketvirtas ingsnis.
Papildykite program kintamaisiais ir veiksmais, reikalingais kelions kainai skaiiuoti ir spausdinti.
double kaina1, kaina2;
double atstumas = k2.ilgis + k1.ilgis + k3.ilgis;
if (a1.degalai == "benzinas")
kaina1 = (atstumas / 100) * a1.snaudos * benzKaina;
else
kaina1 = (atstumas / 100) * a1.snaudos * dyzKaina;
if (a2.degalai == "benzinas")
kaina2 = (atstumas / 100) * a2.snaudos * benzKaina;
else
kaina2 = (atstumas / 100) * a2.snaudos * dyzKaina;
cout << "Automobiliu " << a1.pav
<< " i Alytaus Panev nuvaiuosime u " << kaina1 << " Lt" << endl;
cout << "Automobiliu " << a2.pav
<< " i Alytaus Panev nuvaiuosime u " << kaina2 << " Lt" << endl;
Patikrinkite programos veikim. Ekrane turite matyti:
Keliai:
Kaunas Vilnius, 105, 110
Kaunas - Alytus, 65.6, 90
Vilnius Panevys, 136, 120
Automobiliai:
Opel Meriva, benzinas, 7.5
Volkswagen Golf, dyzelinas, 6.3
Kiek kainuoja 1 litras benzino? 4.75
Kiek kainuoja 1 litras dyzelino? 4.45
Automobiliu Opel Meriva i Alytaus Panev nuvaiuosime u 109.226 Lt
Automobiliu Volkswagen Golf i Alytaus Panev nuvaiuosime u 85.9553 Lt

Programos papildymas.
Papildykite program veiksmais, nustataniais, kiek kilometr nuvaiuot kiekvienas automobilis, jei degal
pilta u 100 Lt.

P175B117 Programavimo vadas Atviroji klas

Savarankiko darbo uduotis.


Yra keturi draugai. inomi kiekvieno j vardas, gis, svoris. Krepinio komanda renka aidjus dvi
pozicijas, apie kurias inoma: pavadinimas, gio intervalas. Paraykite program, kuri pateikt
rekomendacijas, kuri i pozicij gali pretenduoti kiekvienas i draug.

P1.3. Objekt rinkinys. Funkcijos

Objekt rinkinys masyve.


Funkcijos.
Reikmi vedimas i failo.
Reikmi spausdinimas fail lentele.

Uduotis. Firmos automobiliai.


Failo Duomenys.txt pirmoje eilutje yra vienos UAB automobili kiekis, kitose eilutse automobili
duomenys: pavadinimas, degal tipas, degal snaudos 100 km.
Sukurkite klas automobilio duomenims saugoti. ios klass objekt masyv perskaitykite duomenis i failo
Duomenys.txt. Masyvo objekt reikmes spausdinkite lentele fail Rezultatai.txt.
Pradiniai duomenys ir rezultatai.
Pradiniai duomenys faile Duomenys.txt
8
koda Fabia,
Opel Meriva,
Volkswagen Golf,
Opel Astra,
Toyota Corolla,
Toyota Yaris,
Peugeot 207,
koda Octavia,

benzinas
benzinas
dyzelinas
dyzelinas
benzinas
benzinas
dyzelinas
dyzelinas

7.1
7.5
6.3
6.1
6.8
5.9
5.5
7.3
Rezultatai faile Rezultatai.txt

Automobili skaiius: 8
Automobili sraas:
---------------------------------------------------|
Pavadinimas
| Degalai
| Snaudos (l/100 km)
---------------------------------------------------| koda Fabia
| benzinas
|
7.10
|
| Opel Meriva
| benzinas
|
7.50
|
| Volkswagen Golf | dyzelinas |
6.30
|
| Opel Astra
| dyzelinas |
6.10
|
| Toyota Corolla | benzinas
|
6.80
|
| Toyota Yaris
| benzinas
|
5.90
|
| Peugeot 207
| dyzelinas |
5.50
|
| koda Octavia
| dyzelinas |
7.30
|
----------------------------------------------------

Sprendimo eiga.

I P1.2 programos nukopijuojama klas automobilio duomenims saugoti.


Pagrindinje funkcijoje main() skelbiamas automobilio klass objekt masyvas.
Paraoma funkcija duomenims i failo vesti objekt masyv.
Paruoiamas duomen failas "Duomenys.txt".
Paraoma funkcija objekt masyvo reikmms spausdinti lentele fail.
Pagrindin funkcija papildoma kreipiniais paraytas funkcijas.

Pirmas ingsnis.

Nukopijuokite P1.1 programos klas Auto.


Pagrindinje funkcijoje apraykite klass Auto objekt masyv A[100] ir kintamj, kuriame bus
saugomas UAB automobili kiekis.

P175B117 Programavimo vadas Atviroji klas


int main()
{
setlocale(LC_ALL, "Lithuanian");
Auto A[100];
// automobili duomenys
int na;
// automobili kiekis
cout << "Programa baig darb\n";
return 0;
}

Antras ingsnis.
Prie pagrindin funkcij paraykite duomen vedimo funkcijos prototip.
void vestiDuomenis(string fv, Auto A[], int & kiek);
Po pagrindine funkcija paraykite duomen vedimo funkcijos tekst.
// I failo fv veda duomenis objekt masyv A(kiek).
void vestiDuomenis(string fv, Auto A[], int & kiek)
{
ifstream fd(fv.c_str());
fd >> kiek; fd.ignore();
for (int i = 0; i < kiek; i++) {
getline(fd, A[i].pav, ','); fd >> ws;
fd >> A[i].degalai;
fd >> A[i].snaudos;
fd.ignore();
}
fd.close();
}
Naudodamiesi pavyzdiu paruokite duomen fail Duomenys.txt.

Treias ingsnis.
Prie pagrindin funkcij paraykite objekt masyvo reikmi spausdinimo funkcijos prototip.
void SpausdintiDuomenis(string fv, Auto A[], int kiek);
Po pagrindine funkcija paraykite objekt masyvo reikmi spausdinimo funkcijos tekst.
// Objekt masyvo A(kiek) reikmes spausdina lentele fail fv
void SpausdintiDuomenis(string fv, Auto A[], int kiek)
{
ofstream fr(fv.c_str(), ios::app);
fr.setf(ios::fixed); fr.setf(ios::left);
fr << "Automobili skaiius: " << kiek << endl;
fr << "Automobili sraas:\n";
fr << "----------------------------------------------------\n";
fr << "|
Pavadinimas
| Degalai
| Snaudos (l/100 km)\n";
fr << "----------------------------------------------------\n";
for (int i = 0; i < kiek; i++) {
fr << "| " << setw(15) << A[i].pav << " | " << setw(10) << A[i].degalai
<< " |
" << setprecision(2) << A[i].snaudos
<< "
| " << endl;
}
fr << "----------------------------------------------------\n";
fr.close();
}

Ketvirtas ingsnis.
Papildykite pagrindin funkcij rezultat failo sukrimo (ivalymo) veiksmais.
ofstream fr("Rezultatai.txt");
fr.close();
Papildykite pagrindin funkcij kreipiniais vedimo ir spausdinimo funkcijas.
vestiDuomenis("Duomenys.txt", A, na);
SpausdintiDuomenis("Rezultatai.txt", A, na);
vykdykite program. Rezultat faile "Rezultatai.txt" matysite:
Automobili skaiius: 8
Automobili sraas:
----------------------------------------------------

P175B117 Programavimo vadas Atviroji klas


|
Pavadinimas
| Degalai
| Snaudos (l/100 km)
---------------------------------------------------| koda Fabia
| benzinas
|
7.10
|
| Opel Meriva
| benzinas
|
7.50
|
| Volkswagen Golf | dyzelinas |
6.30
|
| Opel Astra
| dyzelinas |
6.10
|
| Toyota Corolla | benzinas
|
6.80
|
| Toyota Yaris
| benzinas
|
5.90
|
| Peugeot 207
| dyzelinas |
5.50
|
| koda Octavia
| dyzelinas |
7.30
|
----------------------------------------------------

Programos papildymas.
Pakeiskite program taip, kad automobili srao lentelje bt spausdinami eilui numeriai.
Savarankiko darbo uduotis.
Yra inomi n (5 < n < 100) Lietuvos keli duomenys (r. P1.1). Suraykite iuos duomenis fail. Paraykite
program, kuri vest duomenis i failo objekt masyv ir spausdint lentele kit fail.

P1.4. Objekt rinkinys. Sumos, sandaugos, kiekio skaiiavimas

Objekt rinkinys masyve. Funkcijos.


Reikmi vedimas i failo. Reikmi spausdinimas fail lentele.
Sumos, sandaugos, kiekio skaiiavimas.
Uduotis. Firmos automobili degal snaudos.
Failo "Duomenys.txt" pirmoje eilutje yra vienos UAB automobili kiekis, kitose eilutse yra automobili
duomenys: pavadinimas, degal tipas, degal snaudos 100 km.
Sukurkite klas automobilio duomenims saugoti. ios klass objekt masyv perskaitykite duomenis i failo
"Duomenys.txt".

Kiek degal 100 km vidutinikai sunaudoja vienas automobilis?


Duomenis ir rezultatus spausdinkite fail "Rezultatai.txt".
Pradiniai duomenys ir rezultatai.
Pradiniai duomenys faile "Duomenys.txt"
8
koda Fabia,
Opel Meriva,
Volkswagen Golf,
Opel Astra,
Toyota Corolla,
Toyota Yaris,
Peugeot 207,
koda Octavia,

benzinas,
benzinas,
dyzelinas,
dyzelinas,
benzinas,
benzinas,
dyzelinas,
dyzelinas,

7.1
7.5
6.3
6.1
6.8
5.9
5.5
7.3

Rezultatai faile "Rezultatai.txt"


Automobili skaiius: 8
Automobili sraas:
---------------------------------------------------|
Pavadinimas
| Degalai
| Snaudos (l/100 km)
---------------------------------------------------| koda Fabia
| benzinas
|
7.10
|
| Opel Meriva
| benzinas
|
7.50
|
| Volkswagen Golf | dyzelinas |
6.30
|
| Opel Astra
| dyzelinas |
6.10
|
| Toyota Corolla | benzinas
|
6.80
|
| Toyota Yaris
| benzinas
|
5.90
|
| Peugeot 207
| dyzelinas |
5.50
|
| koda Octavia
| dyzelinas |
7.30
|
---------------------------------------------------Vidutins degal snaudos: 6.56 litro/100 km

P175B117 Programavimo vadas Atviroji klas

Sprendimo eiga.

Nukopijuojama P1.3 programa kartu su klase Auto ir duomen failu Duomenys.txt.


Paraoma funkcija klass Auto objekt masyvo lauko snaudos reikmi vidurkiui skaiiuoti.
Pagrindin funkcija papildoma paraytos funkcijos grintos reikms spausdinimu.

Pirmas ingsnis.

Nukopijuokite P1.3 program kartu su klase Auto ir duomen failu Duomenys.txt.

Antras ingsnis.
Prie pagrindin funkcij paraykite vidurkio skaiiavimo funkcijos prototip.
double VidSnaudos(Auto A[], int kiek);
Po pagrindine funkcija paraykite vidurkio skaiiavimo funkcijos tekst.
// Skaiiuoja ir grina objekt masyvo A(kiek) lauko snaudos vidutin reikm
double VidSnaudos(Auto A[], int kiek)
{
double sum = 0;
for (int i=0; i<kiek; i++) {
sum = sum + A[i].snaudos;
}
return sum / kiek;
}

Treias ingsnis.
Papildykite pagrindin funkcij paraytos funkcijos grintos reikms spausdinimu.
fr.open("rezultatai.txt", ios::app);
fr.setf(ios::fixed); fr.setf(ios::left);
fr << "Vidutins degal snaudos: " << setprecision(2) << VidSnaudos(A, na)
<< " litro/100 km" << endl;
fr.close();
vykdykite program. Rezultat faile "Rezultatai.txt" matysite:
Automobili skaiius: 8
Automobili sraas:
---------------------------------------------------|
Pavadinimas
| Degalai
| Snaudos (l/100 km)
---------------------------------------------------| koda Fabia
| benzinas
|
7.10
|
| Opel Meriva
| benzinas
|
7.50
|
| Volkswagen Golf | dyzelinas |
6.30
|
| Opel Astra
| dyzelinas |
6.10
|
| Toyota Corolla | benzinas
|
6.80
|
| Toyota Yaris
| benzinas
|
5.90
|
| Peugeot 207
| dyzelinas |
5.50
|
| koda Octavia
| dyzelinas |
7.30
|
---------------------------------------------------Vidutins degal snaudos: 6.56 litro/100 km

Programos papildymas.
Paraykite funkcij dyzelini automobili kiekiui rasti. Papildykite program io kiekio radimu ir
spausdinimu rezultat fail.
Savarankiko darbo uduotis.
Modifikuokite P1.4 program, kuri papildomai rast:
kiek degal 100 km vidutinikai sunaudoja vienas benzininis automobilis;
vertint situacij, kad gali nebti n vieno benzininio automobilio.

P175B117 Programavimo vadas Atviroji klas

Laboratorinio darbo LD1 uduotys


Uduoties variant pasirinkite pagal kompiuterio numer.
Kompiuterio numer dalinkite i 12, ir (gauta liekana + 1) rodo varianto numer.

Programa

Programos darbo demonstravimas


Darbo gynimas

1 tk. Pirma klas.


1 tk. Antra klas.
1 tk. Funkcija main().
1 tk. Klass atskiruose failuose.
1 tk. Programa dirba.
1 tk. Su studento duomenimis.
1 tk. Su dstytojo duomenimis.
3 tk. Testas arba gebjimas papildyti program

LA11. Sodas
Sukurkite klas Medis, kuri turt kintamuosius amiui ir aukiui saugoti. Auga daug medi. Rasti,
koks vidutinis medi auktis ir koks vidutinis amius.
Papildykite klas Medis kintamuoju, skirtu medio lajos skersmeniui saugoti. Papildykite duomenis
medio lajos skersmeniu. Sukurkite klas Sodas, kuris turt kintamuosius sodo ilgiui ir ploiui
saugoti. Ar visi mediai gali bti vieno sodo mediais?
LA12. Krepinis
Sukurkite klas Studentas, kuri turt kintamuosius amiui ir giui saugoti. Studentai nutar
treniruotis aisti krepin. Rasti, kiek yra student, auktesni u pirm srae ir koks student
vidutinis gis.
Papildykite klas Studentas kintamuoju, skirtu studento masei saugoti. Papildykite pradinius
duomenis. Sukurkite klas Liftas, kuri turt kintamuosius lifto keliamosios galios reikmei ir talpai
saugoti. Per kelis kartus visi studentai pakils liftu reikiam aukt? Pateikite vien i daugelio teising
atsakym.
LA13. Studentas
Sukurkite klas Pabaisa, kuri turt kintamuosius rag ir uodeg kiekiui saugoti. Susitiko gdiame
mike daug pabais. Kiek i viso jos turi rag ir uodeg?
Pildykite klas Pabaisa kintamuoju, skirtu amiui saugoti. Papildykite pradinius duomenis. Sukurkite
klas Studentas, kuri turt kintamuosius trofj skaiiui (atskirai ragams ir uodegoms) saugoti.
Kiek studentas turs trofj, jeigu sunaikins pirm ir paskutin pabaisas?
LA14. Monetos
Sukurkite klas Moneta, kuri turt kintamuosius nominalui ir masei saugoti. Studentas gavo daug
marsiei monet. Kokia vis monet mas ir kokia vis monet bendra pinigin vert?
Papildykite klas Moneta kintamaisiais, skirtais monetos storiui ir skersmeniui saugoti. Papildykite
pradinius duomenis. Sukurkite klas Cilindras, kuri turt kintamuosius ilgiui ir skersmeniui
saugoti. Kiek yra monet, kurioms saugoti tinka cilindrin taupykl? Kiek kiekvieno nominalo monet
atskirai galima sutalpinti tokio tipo taupykl?
LA15. Traukinys
Sukurkite klas Automobilis, kuri turt kintamuosius keleivi, telpani automobil, skaiiui ir
kuro, sunaudojamo 100 km, kiekiui bei vieno litro kainai saugoti. Automobili nuomos punkte yra
daug kelionei tinkam automobili. Rasti, kiek kuro sunaudoja kelion pirmuoju srae automobiliu,
kai kelions atstumas nurodomas klaviatra, ir kiek vidutinikai telpa keleivi automobilyje.
Papildykite klas Automobilis kintamuoju, skirtu kelions atstumui saugoti. Papildykite pradinius
duomenis. Sukurkite klas Traukinys, kuri turt kintamuosius nuvaiuotam atstumui ir bilieto
kainai saugoti. Traukinio nuvaiuotas atstumas ir bilieto kaina nurodoma klaviatra. Kurie
automobiliai nuvaiuos didesn atstum, negu traukiniu nuvaiuotas atstumas? Kuriais automobiliais
vaiuoti traukinio atstum yra pigiau?

P175B117 Programavimo vadas Atviroji klas

10

LA16. Lentyna
Sukurkite klas Knyga, kuri turt kintamuosius knygos puslapi skaiiui ir knygos puslapio storiui
saugoti. Knygyne daug knyg. Rasti kiek i viso puslapi turi visos knygos ir kiek metr lentyn
reikia, norint sudti visas knygas greta viena kitos.
Papildykite klas Knyga kintamuoju, skirtu knygos aukiui saugoti. Papildykite pradinius duomenis.
Sukurkite klas Lentyna, kuri turt kintamuosius lentynos aukiui ir ilgiui saugoti. Ar visos knygos
tilps lentynoje?
LA17. Sal
Sukurkite klas Kd, kuri turt kintamuosius jos uimamam plotui ant grind saugoti: ilgiui ir
ploiui. Kds projekcija ant grind yra staiakampio formos. Sandlyje yra daug skritingo tipo
kdi. Rasti, koks vidutinis kds uimamas plotas ant grind.
Papildykite klas Kd kintamuoju, skirtu sdimos ploktumos aukiui nuo grind saugoti.
Papildykite pradinius duomenis. Sukurkite klas Sal, kuri turt kintamuosius sals ilgiui ir ploiui
saugoti. Salje reikia sustatyti kdes, kuri sdimos ploktumos auktis nuo grind gali bti tarp 40 ir
50 cm, o atstumas tarp kdi eili 30 cm. Sals imatavimai inomi. Kiek reikia tinkamo aukio
kdi, jeigu per sals vidur ir kratuose reikia palikti 1 m ploio prajimus.
LA18. Namas
Sukurkite klas Ekovata (apiltinimo mediaga), kuri turt kintamuosius ilgiui ir ploiui saugoti.
Statybini preki parduotuvje yra daug tip ekovat. Rasti, vidutin ekovatos uimam plot ir kiek
yra ekovat, kuri uimamas plotas didesnis u vidutin.
Papildykite klas Ekovata kintamuoju, skirtu vatos storiui saugoti. Papildykite pradinius duomenis.
Sukurkite klas Namas, kuri turt kintamuosius namo aukiui, ilgiui ir ploiui saugoti. Nam reikia
apiltinti ekovata. Apiltinimo sluoksnio storis tarp 25 ir 30 cm. Kiek reikia kvadratini metr
ekovatos namui apiltinti? Ar parduotuvje yra tokia pagal stor tinkama ekovata ir, jeigu yra, tai kiek
vienet reikia nupirkti?
LA19. Rstas
Sukurkite klas Lenta, kuri turt kintamuosius ilgiui ir storiui saugoti. Sandlyje yra daug tip lent.
Rasti, kiek yra lent, kurios ilgesns u vidutin lent ilg ir kiek yra lent, storesni u paskutin
srae.
Papildykite klas Lenta kintamuoju, skirtu lentos medio riai saugoti (1-beras, 2-egl, 3-puis ir
t.t.). Papildykite pradinius duomenis. Sukurkite klas Rstas (medio), kuri turt kintamuosius rsto
ilgiui ir skersmeniui saugoti. Kiek kurio tipo lent galima ipjauti i vieno rsto? Skaiiuojant lentos
ilgis turi bti ne didesnis u rsto ilg, o storis turi bti ne storesnis u rsto skersmen (kiek lent pagal
stor sitenka duoto rsto skersmenyje).
LA110. Siuvykla
Sukurkite klas Kostiumas, kuri turt kintamuosius modelio pavadinimui, mediagos pavadinimui,
pasiuvimui reikalingos mediagos ilgiui bei ploiui ir atrai kiekiui (procentais, %) saugoti. Siuvykla
siuva daugelio skirting modeli kostiumus. Raskite, kiek i viso reikia mediagos, jeigu kiekvieno
modelio tipo bus siuvamas tik vienas kostiumas ir kiek i viso bus atrai.
Papildykite klas Kostiumas kintamuoju, skirtu kostiumui pasiti reikalingoms laiko snaudoms
(minutmis) saugoti. Papildykite pradinius duomenis. Sukurkite klas Siuvykla, kuri turt kintamj
siuvyklos pavadinimui saugoti ir kintamj siuvj skaiiui saugoti. Kiek kiekvieno modelio kostium
siuvykla gali pasiti per savait? Siuvyklos darbo laikas nurodomas klaviatra.
LA111. Kepykla
Sukurkite klas Duona, kuri turt kintamuosius duonos riai, milt pavadinimui, rupumui, kepaliuko
svoriui ir kepimo prieaugiui (procentais, %) saugoti. Kepykla kepa skirting ri duon. Raskite,
koks kepyklos ikept kepaliuk bendras svoris ir koks bendras kepimo prieaugis didiausias, jeigu
kiekvienos ries kepama po n kepaliuk.
Papildykite klas Duona kintamuoju, skirtu duonos kepaliuko uimamam ant lentynos plotui saugoti.
Papildykite pradinius duomenis. Sukurkite klas Kepykla, kuri turt kintamj kepyklos pavadinimui
saugoti ir kintamj, skirt saugoti per nakt reikalingam ikepti vienos ries duonos kepaliuk
kiekiui. Suskaiiuokite, kiek ploto lentyn kiekvienos ries duonai sudti reikt.

P175B117 Programavimo vadas Atviroji klas

11

LA112. Kepykll
Sukurkite klas Sausainis, kuri turt kintamuosius, skirtus ries pavadinimui, deimiai vienet
sausaini pagaminti reikaling kiauini kiekiui, vieno sausainio uimamam ploiui bei ilgiui, ir kiek
vienet sausaini telpa orkaitje vienu metu kepti saugoti. Kepykll kepa skirting ri sausainius.
Kiekvienos ries kepa po n sausaini. Orkaitje gali bti tik vienos ries sausainiai. Raskite, kiek
reikia kiauini i viso visiems sausainiams ir kiek kart reikia kepti.
Papildykite klas Sausainis kintamuoju, skirtu saugoti laikui, reikalingu sausainiui kepti orkaitje
(minutmis). Papildykite pradinius duomenis. Sukurkite klas Kepykll, kuri turt kintamj
kepyklls pavadinimui saugoti ir kintamj, skirt saugoti orkaii skaiiui. Kiek nakt galima ikepti
sausaini?

You might also like