# Struktūros: struktūros kūrimas, informacijos įvedimas ir gavimas (išvedimas) iš objekto

# Vaizdo pamoka

1 dalis:

2 dalis:

# Pavyzdžiai

# Pavyzdys 1

Kodas:

#include <iostream>
using namespace std;

// Sukuriama struktūra

struct zmogus
{
    string vardas;
    string pavarde;
    int amzius;
    double ugis;
};

int main()
{
    // Sukuriamas objektas
    zmogus petras;

    // Objektas užpildomas duomenimis
    petras.vardas = "Petras";
    petras.pavarde = "Petrauskas";
    petras.amzius = 70;
    petras.ugis = 1.74;

    // Objekto duomenys išvedami į ekraną
    cout << petras.vardas << " " << petras.pavarde << " ("
        << petras.amzius << " m.), jo ugis " << petras.ugis
        << "m." << endl;

    return 0;
}

Rezultatai:

Petras Petrauskas (70 m.), jo ugis 1.74m.

# Pavyzdys 2

Kodas:

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

struct medis
{
    string pavadinimas;
    int aukstis; // mm
};

int main()
{
    medis m1, m2;

    cout << "Iveskite pirmo medzio pavadinima ir auksti (mm): ";
    cin >> m1.pavadinimas >> m1.aukstis;

    cout << "Iveskite antro medzio pavadinima ir auksti (mm): ";
    cin >> m2.pavadinimas >> m2.aukstis;

    cout << endl;

    cout << "Pavadinimas          Aukstis" << endl;
    cout << setw(20) << left << m1.pavadinimas << " " << m1.aukstis << endl;
    cout << setw(20) << left << m2.pavadinimas << " " << m2.aukstis << endl;

    return 0;
}

Rezultatai:

Iveskite pirmo medzio pavadinima ir auksti (mm): Liepa 147
Iveskite antro medzio pavadinima ir auksti (mm): Obelis 178

Pavadinimas          Aukstis
Liepa                147
Obelis               178

# Pavyzdys 3

Kodas:

#include <iostream>
using namespace std;

struct preke
{
    string pavadinimas;
    double kaina;
    int kiekis;

    void isvedimas()
    {
        cout << "PREKES INFORMACIJA" << endl;
        cout << "Pavadinimas: " << pavadinimas << endl;
        cout << "Kaina: " << kaina << " eur." << endl;
        cout << "Kiekis: " << kiekis << " vnt." << endl;
        cout << endl;
    }
};

int main()
{
    preke piestukas;

    piestukas.pavadinimas = "Piestukas ABC, raudonas";
    piestukas.kaina = 0.99;
    piestukas.kiekis = 94;

    piestukas.isvedimas();

    return 0;
}

Rezultatai:

PREKES INFORMACIJA
Pavadinimas: Piestukas ABC, raudonas
Kaina: 0.99 eur.
Kiekis: 94 vnt.

# Pavyzdys 4

Kodas:

#include <iostream>
using namespace std;

struct automobilis
{
    string marke;
    string modelis;
    int metai;
    double darbinis_turis;
    int rida;

    void ivedimas()
    {
        cout << "Iveskite marke: ";
        cin >> marke;
        cout << "Iveskite modeli: ";
        cin >> modelis;
        cout << "Iveskite metus: ";
        cin >> metai;
        cout << "Iveskite darbini turi: ";
        cin >> darbinis_turis;
        cout << "Iveskite rida: ";
        cin >> rida;
    }

    void isvedimas()
    {
        cout << "Marke: " << marke << endl;
        cout << "Modelis: " << modelis << endl;
        cout << "Metai: " << metai << endl;
        cout << "Darbinis turis: " << darbinis_turis << endl;
        cout << "Rida: " << rida << endl;
        cout << endl;
    }
};

int main()
{
    automobilis auto1, auto2;

    cout << "Iveskite pirmo automobilio duomenis." << endl;
    auto1.ivedimas();

    cout << "\nIveskite antro automobilio duomenis." << endl;
    auto2.ivedimas();

    cout << "\nIvesti pirmo automobilio duomenys." << endl;
    auto1.isvedimas();

    cout << "Ivesti antro automobilio duomenys." << endl;
    auto2.isvedimas();

    return 0;
}

Rezultatai:

Iveskite pirmo automobilio duomenis.
Iveskite marke: Audi
Iveskite modeli: A4
Iveskite metus: 2018
Iveskite darbini turi: 1.8
Iveskite rida: 148873

Iveskite antro automobilio duomenis.
Iveskite marke: Tesla
Iveskite modeli: S
Iveskite metus: 2019
Iveskite darbini turi: 1.8
Iveskite rida: 14877

Ivesti pirmo automobilio duomenys.
Marke: Audi
Modelis: A4
Metai: 2018
Darbinis turis: 1.8
Rida: 148873

Ivesti antro automobilio duomenys.
Marke: Tesla
Modelis: S
Metai: 2019
Darbinis turis: 1.8
Rida: 14877

# Pavyzdys 5

Kodas:

#include <iostream>
using namespace std;

struct darbuotojas
{
    string vardas;
    string pavarde;
    double etatas;
    double atlyginimas;
    string pareigos;

    void sudeti_duomenis(string vardas, string pavarde, double etatas,
        double atlyginimas, string kuo_dirba)
    {
        this->vardas = vardas;
        this->pavarde = pavarde;
        this->etatas = etatas;
        this->atlyginimas = atlyginimas;
        pareigos = kuo_dirba;
    }

    void isvesti_duomenis()
    {
        cout << "Zmogaus duomenys" << endl;
        cout << vardas << " " << pavarde << " dirba "
            << etatas << " etatu, uzdirba " << atlyginimas
            << " eur, jis(-i) dirba " << pareigos << "\n\n";
    }
};

int main()
{
    darbuotojas pirmas, antras, trecias;

    pirmas.sudeti_duomenis("Jonas", "Jonaitis", 1, 800, "pencininku");
    antras.sudeti_duomenis("Petras", "Petraitis", 1.5, 1500, "programuotoju");
    trecias.sudeti_duomenis("Ona", "Onauskiene", 0.75, 700, "namu seimininke");

    pirmas.isvesti_duomenis();
    antras.isvesti_duomenis();
    trecias.isvesti_duomenis();

    if (pirmas.atlyginimas > antras.atlyginimas)
    {
        cout << pirmas.vardas << " " << pirmas.pavarde << " uzdirba daugiau nei "
            << antras.vardas << " " << antras.pavarde << endl;
    }

    if (antras.atlyginimas > trecias.atlyginimas)
    {
        cout << antras.vardas << " " << antras.pavarde << " uzdirba daugiau nei "
            << trecias.vardas << " " << trecias.pavarde << endl;
    }

    if (trecias.atlyginimas > pirmas.atlyginimas)
    {
        cout << trecias.vardas << " " << trecias.pavarde << " uzdirba daugiau nei "
            << pirmas.vardas << " " << pirmas.pavarde << endl;
    }

    return 0;
}

Rezultatai:

Zmogaus duomenys
Jonas Jonaitis dirba 1 etatu, uzdirba 800 eur, jis(-i) dirba pencininku

Zmogaus duomenys
Petras Petraitis dirba 1.5 etatu, uzdirba 1500 eur, jis(-i) dirba programuotoju

Zmogaus duomenys
Ona Onauskiene dirba 0.75 etatu, uzdirba 700 eur, jis(-i) dirba namu seimininke

Petras Petraitis uzdirba daugiau nei Ona Onauskiene

# Pavyzdys 6

Kodas:

#include <iostream>
using namespace std;

struct studentas
{
    string vardas;
    string grupe;
    int pazymiai[50];
    int pazymiu_kiekis;
};

double studento_paz_vidurkis(studentas studentas)
{
    int suma = 0;

    for (int i = 0; i < studentas.pazymiu_kiekis; i++)
    {
        suma += studentas.pazymiai[i];
    }

    return (double)suma / studentas.pazymiu_kiekis;
}

double skaiciu_vidurkis(int skaiciai[], int kiekis)
{
    int suma = 0;

    for (int i = 0; i < kiekis; i++)
    {
        suma += skaiciai[i];
    }

    return (double)suma / kiekis;
}

int main()
{
    studentas stud;

    stud.vardas = "Povilas";
    stud.grupe = "IF-9/2";
    stud.pazymiai[0] = 8;
    stud.pazymiai[1] = 9;
    stud.pazymiai[2] = 7;
    stud.pazymiai[3] = 10;
    stud.pazymiu_kiekis = 4;

    cout << "Studento duomenys" << endl;
    cout << "Vardas: " << stud.vardas << endl;
    cout << "Mokosi grupeje: " << stud.grupe << endl;
    cout << "Studento pazymiai: ";

    for (int i = 0; i < stud.pazymiu_kiekis; i++)
    {
        cout << stud.pazymiai[i] << " ";
    }

    cout << endl;

    double vidurkis1 = studento_paz_vidurkis(stud);
    double vidurkis2 = skaiciu_vidurkis(stud.pazymiai, stud.pazymiu_kiekis);

    cout << "Vidurkis 1: " << vidurkis1 << endl;
    cout << "Vidurkis 2: " << vidurkis2 << endl;

    return 0;
}

Rezultatai:

Studento duomenys
Vardas: Povilas
Mokosi grupeje: IF-9/2
Studento pazymiai: 8 9 7 10
Vidurkis 1: 8.5
Vidurkis 2: 8.5

# Pavyzdys 7

Kodas:

#include <iostream>
using namespace std;

struct variklis
{
    string gamintojas;
    double darbinis_turis;
};

struct automobilis
{
    string marke;
    string modelis;
    int metai;
    variklis variklis;

    void isvedimas()
    {
        cout << marke << " " << modelis
            << " pagamintas " << metai << " metais"
            << ", jame yra toks variklis: " << endl
            << "gamino: " << variklis.gamintojas
            << ", jo darbinis turis " << variklis.darbinis_turis << " l"
            << endl;
    }
};

int main()
{
    automobilis masina;

    masina.marke = "Moskvicius";
    masina.modelis = "800";
    masina.metai = 1984;
    masina.variklis.gamintojas = "rusai";
    masina.variklis.darbinis_turis = 3.2;

    masina.isvedimas();

    return 0;
}

Rezultatai:

Moskvicius 800 pagamintas 1984 metais, jame yra toks variklis:
gamino: rusai, jo darbinis turis 3.2 l

# Užduotys

# Užduotis 1

Susikurkite struktūrą saugoti šiems aukštosios mokyklos duomenims:

  • Pavadinimas.
  • Įsteigimo metai.
  • Miestas.
  • Studentų skaičius.
  • Darbuotojų skaičius.

Susikurkite objektą ir leiskite vartotojui suvesti šiuos duomenis konsolės pagalba.

Suvestus duomenis išveskite pasirinkta forma.

# Užduotis 2

Susikurkite struktūrą saugoti šiems kepyklos duomenims:

  • Pavadinimas.
  • Adresas.
  • Darbuotojų kiekis.
  • Vidutiniškai per dieną iškepamų kepalų kiekis.
  • Vidutinė vieno kepalo kaina.

Susikurkite objektą ir užpildykite jį informacija bet kuria norima forma.

Suvestus duomenis išveskite pasirinkta forma.

# Užduotis 3

Susikurkite struktūrą saugoti šiems knygos duomenims:

  • Autorius.
  • Pavadinimas.
  • Kaina.
  • Leidykla.
  • Puslapių skaičius.

Susikurkite tris knygos struktūros objektus, juos užpildykite norima forma.

Suvestus duomenis išveskite lentelės pavidalu.

# Užduotis 4 (laisva forma)

  • Susikurkite savo susigalvotą struktūrą.
  • Susikurkite kelis objektus, juos užpildykite duomenimis.
  • Išveskite visus duomenis lentelės pavidalu.
  • Išveskite kai kuriuos pasirinktus duomenis.