Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Autor: Laco Super
- // Skupina: 2
- // Zadání: 6 - Vyložení vlaků
- #include <iostream>
- #include "Vagon.h"
- #include "Zasobnik.h"
- using namespace std;
- // Konstanty ze zadání
- const int C1 = 100; // Minimální cena položky
- const int C2 = 1000; // Maximální cena položky
- const int N = 5; // Počet vagónů
- const int P = 2; // Maximální počet položek
- // Zásobníky
- Zasobnik vlak(N);
- Zasobnik levneVagony(N); // Maximální cena nákladu vagonu = 1/3 maximální ceny nákladu (C2 x P)
- Zasobnik drazsiVagony(N);
- Zasobnik ostatniVagony(N);
- Vagon vygenerujVagon(int cisloVagonu);
- void vygenerujVlak();
- void rozdelVagony();
- void vylozVagony();
- void vylozVagony2();
- int main()
- {
- srand((unsigned int) time(NULL)); // reset hodin pro generování nahodnych čísel
- vygenerujVlak();
- rozdelVagony();
- vylozVagony2();
- return 0;
- }
- // 3 zásobniky, procházet dokud všechny nejsou prázdné - do while - all empty
- void vylozVagony2()
- {
- do
- {
- Vagon levnyVagon;
- Vagon drazsiVagon;
- Vagon ostatniVagon;
- if(!levneVagony.empty())
- {
- levnyVagon = levneVagony.pop();
- }
- else
- {
- Vagon *p = &levnyVagon;
- p = NULL;
- }
- if(!drazsiVagony.empty())
- {
- drazsiVagon = drazsiVagony.pop();
- }
- else
- {
- Vagon *p = &drazsiVagon;
- p = NULL;
- }
- if(!ostatniVagony.empty())
- {
- ostatniVagon = ostatniVagony.pop();
- }
- else
- {
- Vagon *p = &ostatniVagon;
- p = NULL;
- }
- do
- {
- if(&levnyVagon != NULL && levnyVagon.PocetPolozek() > 0)
- {
- levnyVagon.VylozitPolozku();
- cout << "V" << levnyVagon.Cislo() << "[" << levnyVagon.PocetPolozek() << "]" << endl;
- if (levnyVagon.PocetPolozek() == 0)
- {
- vlak.push(levnyVagon);
- cout << "X" << levnyVagon.Cislo() << "[1]" << endl << endl;
- }
- }
- if(&drazsiVagon != NULL && drazsiVagon.PocetPolozek() > 0)
- {
- drazsiVagon.VylozitPolozku();
- cout << "V" << drazsiVagon.Cislo() << "[" << drazsiVagon.PocetPolozek() << "]" << endl;
- if (drazsiVagon.PocetPolozek() == 0)
- {
- vlak.push(drazsiVagon);
- cout << "X" << drazsiVagon.Cislo() << "[2]" << endl << endl;
- }
- }
- if(&ostatniVagon != NULL && ostatniVagon.PocetPolozek() > 0)
- {
- ostatniVagon.VylozitPolozku();
- cout << "V" << ostatniVagon.Cislo() << "[" << ostatniVagon.PocetPolozek() << "]" << endl;
- if (ostatniVagon.PocetPolozek() == 0)
- {
- vlak.push(ostatniVagon);
- cout << "X" << ostatniVagon.Cislo() << "[3]" << endl << endl;
- }
- }
- }
- while ((&levnyVagon == NULL || levnyVagon.PocetPolozek() == 0) && (&drazsiVagon == NULL || drazsiVagon.PocetPolozek() == 0) && (&ostatniVagon == NULL || ostatniVagon.PocetPolozek() == 0));
- }
- while (!(levneVagony.empty() && drazsiVagony.empty() && ostatniVagony.empty()));
- }
- // Projde všechny tři zasobniky s vagony a postupně je vyloží, po vyložení vagonu připojí vagon do vlaku
- void vylozVagony()
- {
- Vagon temp;
- Vagon temp1;
- Vagon temp2;
- do
- {
- if(!levneVagony.empty())
- {
- temp = levneVagony.pop();
- }
- if(!drazsiVagony.empty())
- {
- temp1 = drazsiVagony.pop();
- }
- if(!ostatniVagony.empty())
- {
- temp2 = ostatniVagony.pop();
- }
- do
- {
- if (!levneVagony.empty())
- {
- if(temp.PocetPolozek() > 0)
- {
- temp.VylozitPolozku();
- cout << "V" << temp.Cislo() << "[" << temp.PocetPolozek() << "]" << endl << endl;
- cout << endl;
- }
- else if (temp.PocetPolozek() == 0)
- {
- vlak.push(temp);
- cout << endl << endl << "Vagonu vylozen: " << "X" << temp.Cislo() << "[1]" << endl;
- }
- }
- if (!drazsiVagony.empty())
- {
- if(temp1.PocetPolozek() > 0)
- {
- temp1.VylozitPolozku();
- cout << "V" << temp1.Cislo() << "[" << temp1.PocetPolozek() << "]" << endl;
- cout << endl;
- }
- else if (temp1.PocetPolozek() == 0)
- {
- vlak.push(temp1);
- cout << endl << endl << "Vagonu vylozen: " << "X" << temp1.Cislo() << "[2]" << endl;
- }
- }
- if (!ostatniVagony.empty())
- {
- if(temp2.PocetPolozek() > 0)
- {
- temp2.VylozitPolozku();
- cout << "V" << temp2.Cislo() << "[" << temp2.PocetPolozek() << "]" << endl;
- cout << endl;
- }
- else if (temp2.PocetPolozek() == 0)
- {
- vlak.push(temp2);
- cout << endl << endl << "Vagonu vylozen: " << "X" << temp2.Cislo() << "[3]" << endl;
- }
- }
- }
- // cyklus končí jsou li všechny vagony prazdne nebo jsou li, všechny položky prazdne
- while ( (temp.PocetPolozek() != 0 || levneVagony.empty()) && (temp1.PocetPolozek() != 0 || drazsiVagony.empty()) && (temp2.PocetPolozek() != 0 || ostatniVagony.empty()));
- }
- while(levneVagony.empty() && drazsiVagony.empty() && ostatniVagony.empty());
- }
- //vygeneruje vlak - přidá objekty do zásobníku
- void vygenerujVlak()
- {
- cout << "Vlak vygenerovan:" << endl << endl;
- for(int i = 0; i < N; i++)
- {
- vlak.push(vygenerujVagon(i));
- }
- }
- // rozdělí vagony do jednotlivych zasobniku podle ceny nákladu
- void rozdelVagony()
- {
- Vagon temp;
- int maxCenaNakladu;
- cout << endl << endl << "Rozdeleni vagonu do zasobniku" << endl << endl;
- for(int i = 0; i < N; i++)
- {
- temp = vlak.pop();
- maxCenaNakladu = temp.PocetPolozek() * C2;
- if (temp.CenaNakladu() <= (maxCenaNakladu * 0.3))
- {
- levneVagony.push(temp);
- cout << "Z" << temp.Cislo() << "[1]" << endl;
- }
- else if (temp.CenaNakladu() > (maxCenaNakladu * 0.3) && temp.CenaNakladu() < (maxCenaNakladu * 0.6))
- {
- drazsiVagony.push(temp);
- cout << "Z" << temp.Cislo() << "[2]" << endl;
- }
- else
- {
- ostatniVagony.push(temp);
- cout << "Z" << temp.Cislo() << "[3]" << endl;
- }
- }
- cout << endl << endl << endl;
- }
- // vygeneruje jeden vagon
- Vagon vygenerujVagon(int cisloVagonu)
- {
- int cenaPolozky = C1 + (rand() % ( C2 - C1 + 1 ) );
- int pocetPolozek = rand() % P + 1;
- cout << "G" << cisloVagonu << "[" << pocetPolozek << "]" << "[" << cenaPolozky<< "]" << endl;
- return Vagon(cisloVagonu, pocetPolozek, cenaPolozky);
- }
Advertisement
Add Comment
Please, Sign In to add comment