Restauracja - prośba o nakierowanie w kodzie

0

Witam. Kod pisze w notatniku na macu i jest on niedokonczony ani razu nie kompilowany , bo zaczalem godzine temu. Powiem tylko tyle, ze jestem laikiem i chce to napisac po swojemu, ale sie troszke zamotalem. Wiem, ze ify moge zastapic switchami. Proste pytanie. Jak zrobic, zeby w case 2 zapisywalo zamowienie do case 4 i je wyswietlalo, i podliczalo laczne zamowienia (moja metoda jak dwa razy zamowie jedna rzecz to pewnie nie podliczy tego dobrze) i wyswietlalo w case 5? (c++) . Aha wiem, ze jest duzo bledow, ale na kompilatorze postaram sie je usunac. Wiem tez, ze jest duzo prostszych metod, ale w koncu chce zrobic cos prawie sam. Moj sposob na podliczenie jest bez sensu i wiem, ze istnieje cos takiego jak tablice, ale prosze o pomoc nakierowanie jak to zrobic dokladniej. pozniej bede eliminowal bledy.


#include <cstdlib>
#include <iostream>
#include <stdio.h>

using namespace std;
int Wybor, Zamowienie, nr_zam, sala, miesiac, raport, rozliczenie;
int l1,l2,l3,l4,l5,l6,l7,l8,l9,l10,l11,l12,l13,l14,l15;

int main()
{
menu ();
cout << "MENU GLOWNE" << endl;
cout << "***********" << endl;
cout << "WITAMY W RESTAURACJI VENECJA" <<endl;
cout << "1. Wyswietl Menu" << endl;
cout << "2. Zloz Zamowienie" << endl;
cout << "3. Rezerwacja sali" << endl;
cout << "4. Pokaz co zamowiles" << endl;
cout << "5. "Raport" <<endl;
cout << "6. Wyjscie z programu" << endl;

cout << " Prosze wybrac numer: " ;
cin >> Wybor;
switch(Wybor)
{
 case 1:
 cout << "MENU " <<endl;
 cout << "PIZZA: " <<endl;
 cout << "1. * Margherita *\nSkladniki: swiezy sos pomidorowy, ser mozzarella, swieza bazylia\nsrednica wynosi 40 cm, cena: 15 PLN"<< endl;                    
 cout << "2. * Prosciutka *\nSkladniki: swiezy sos pomidorowy, ser mozzarella, szynka\nsrednica wynosi 40 cm, cena: 17 PLN"<< endl;         
 cout << "3. * Capricciosa *\nSkladniki: swiezy sos pomidorowy, ser mozzarella, oliwki, szynka, pieczarki\nsrednica wynosi 40 cm, cena: 19 PLN" <<endl;
 cout << "4. * Regina Rossas *\nSkladniki: swiezy sos pomidorowy, ser mozzarella, szynka, pieczarki\nsrednica wynosi 40 cm, cena: 21 PLN"<<endl;                         
 cout << "5. * Regina Bianca *\nSkladniki: ser mozzarella, szynka, pieczarki\nsrednica wynosi 40 cm, cena: 22 PLN"<<endl; 
 cout << "6. * Estate *\nsos pomidorowy, ser mozzarella, rucola, małe pomidory, ser parmezan\nsrednica wynosi 40 cm, cena: 24 PLN"<<endl;
 cout << "7. * Diavola *\nswiezy sos pomidorowy, ser mozzarella, salami pikantne\nsrednica wynosi 40 cm, cena: 26 PLN"<<endl;
 cout << "8. * Fast Food *\nswiezy sos pomidorowy, ser mozzarella, frytki, parowki\nsrednica wynosi 40 cm, cena: 27 PLN"<<endl;
 cout << "NAPOJE: " <<endl;
 cout << "9. Coca Cola 1l     cena: 5zl"<<endl;
 cout << "10. Coca cola 2l     cena: 7zl"<<endl;
 cout << "11. Fanta 1l         cena: 5zl"<<endl;
 cout << "12. Fanta 2l         cena: 7zl"<<endl;
 cout << "13. Tyskie 0,5l      cena: 6zl"<<endl;
 cout << "14. Zywiec 0,5l      cena: 6zl"<<endl;
 cout << "15. Lech 0,5l        cena: 6zl"<<endl;
cout << "Jesli chcesz cos zamowic prosimy wybrac opcje numer 2." <<endl;
menu();
}
case 2:
{
do while (Zamowienie != 1 && Zamowienie != 2)
{
cout << "Jesli chcesz zlozyc zamowienie kliknij 1."
cout << "Jesli nie chcesz zlozyc zamowienia(wrocic do poprzedniego menu) kliknij 2."
cin >> Zamowienie;





if (Zamowienie==1)
{
cout << "Prosze podac numer zamowienia: ";
cin >> nr_zam;
switch(nr_zam)
{
case 1:
{
cout << " Dziekujemy za zamowienie Margerity za 15 PLN " <<endl;
l1=15;
cout << "Czy zyczy Pan/i sobie cos jeszcze? " <<endl;

}
case 2:
{
cout << " Dziekujemy za zamowienie Prosciutkiej za 17 PLN " <<endl;
l2=17;
cout << "Czy zyczy Pan/i sobie cos jeszcze? " <<endl;

}
case 3:
{
cout << " Dziekujemy za zamowienie Capricciosy za 19 PLN " <<endl;
l3=19;
cout << "Czy zyczy Pan/i sobie cos jeszcze? " <<endl;
}
case 4:
{
cout << " Dziekujemy za zamowienie Reginy Rossy za 21 PLN " <<endl;
l4=21;
cout << "Czy zyczy Pan/i sobie cos jeszcze? " <<endl;

}
case 5:
{
cout << " Dziekujemy za zamowienie Reginy Biancy za 22 PLN " <<endl;
l5=22;
cout << "Czy zyczy Pan/i sobie cos jeszcze? " <<endl;

}
case 6:
{
cout << " Dziekujemy za zamowienie Estate za 24 PLN " <<endl;
l6=24;
cout << "Czy zyczy Pan/i sobie cos jeszcze? " <<endl;

}
case 7:
{
cout << " Dziekujemy za zamowienie Diavoli za 26 PLN " <<endl;
l7=26;
cout << "Czy zyczy Pan/i sobie cos jeszcze? " <<endl;

}
case 8:
{
cout << " Dziekujemy za zamowienie Fast Fooda za 27 PLN " <<endl;
l8=27;
cout << "Czy zyczy Pan/i sobie cos jeszcze? " <<endl;

}
case 9:
{
cout << " Dziekujemy za zamowienie Coca Coli 1l za 5 PLN " <<endl;
l9=5;
cout << "Czy zyczy Pan/i sobie cos jeszcze? " <<endl;
}
case 10:
{
cout << " Dziekujemy za zamowienie Coca Coli 2l za 7 PLN " <<endl;
l10=7;
cout << "Czy zyczy Pan/i sobie cos jeszcze? " <<endl;

}
case 11:
{
cout << " Dziekujemy za zamowienie Fanty 1l za 5 PLN " <<endl;
l11=5;
cout << "Czy zyczy Pan/i sobie cos jeszcze? " <<endl;

}
case 12:
{
cout << " Dziekujemy za zamowienie Fanty 2l za 7 PLN " <<endl;
l12=7;
cout << "Czy zyczy Pan/i sobie cos jeszcze? " <<endl;

}
case 13:
{
cout << " Dziekujemy za zamowienie Tyskiego 0,5l za 6 PLN " <<endl;
l13=6;
cout << "Czy zyczy Pan/i sobie cos jeszcze? " <<endl;

}
case 14:
{
cout << " Dziekujemy za zamowienie Zywca 0,5l za 6 PLN " <<endl;
l14=6;
cout << "Czy zyczy Pan/i sobie cos jeszcze? " <<endl;

}
case 15:
{
cout << " Dziekujemy za zamowienie Lecha 0,5l za 6 PLN " <<endl;
l15=6;
cout << "Czy zyczy Pan/i sobie cos jeszcze? " <<endl;
}
}









}
else if ( Zamowienie ==2)
{
cout << "Wrocimy do menu glownego, jesli chcesz wyjsc prosze wybrac opcje WYJSCIE Z PROGRAMU" <<endl;
menu();
}
else if ( Zamowienie != 1 && Zamowienie != 2}
{
cout << "Wybrales zly numer. Prosze podac numer ponownie:" ;
cin >> Zamowienie;
}
}
}



case 3:
{
cout << "Czy chcesz zarezerwowac sale? " <<endl;
cout << " Jesli tak kliknij 1\nJesli nie kliknij 2 " <<endl;
cout << " Twoj wybor to : " ;
cin >> sala;
do while (sala != 1 && sala !=2)
{
if (sala ==1)
{
cout << "Prosze wybrac miesiac: lipiec, sierpien, wrzesien 2015 r."<<endl;
cout <<" Jesli chcesz zarezerwowac sale w lipcu kliknij 1" << endl;
cout <<" Jesli chcesz zarezerwowac sale w sierpniu kliknij 2" << endl;
cout <<" Jesli chcesz zarezerwowac sale w  wrzesniu kliknij 3" << endl;
cout <<" Jesli chcesz zarezerwowac sale w pozniejszych terminach kliknij 4." << endl;
cin >> miesiac;
do while (miesiac !( miesiac < 1 || miesiac > 4))
{
if ( miesiac == 1 )
{
cout << " W lipcu mamy tylko jeden wolny termin 24.07.2015r." <<endl;
cout << " Jesli chcesz zarezerwowac sale, prosimy o kontakt telefoniczny lub osobisty," <<endl;
cout << " aby omowic wszelkie kwestie odnosnie wystrojenia sali, tematyki, kosztow oraz cateringu" <<endl;
break;
}
else if (miesiac == 2 )
{
cout << " W sierpniu mamy wolne dwa terminy 15.08.2015r. oraz 20.08.2015r." <<endl;
cout << " Jesli chcesz zarezerwowac sale, prosimy o kontakt telefoniczny lub osobisty," <<endl;
cout << " aby omowic wszelkie kwestie odnosnie wystrojenia sali, tematyki, kosztow oraz cateringu" <<endl;
break;
}
else if (miesiac == 3 )
{
cout << " W sierpniu mamy wolne trzy terminy 10.09.2015r. , 15.09.2015r. oraz 20.09.2015r." <<endl;
cout << " Jesli chcesz zarezerwowac sale, prosimy o kontakt telefoniczny lub osobisty," <<endl;
cout << " aby omowic wszelkie kwestie odnosnie wystrojenia sali, tematyki, kosztow oraz cateringu" <<endl;
break;
}
else if(miesiac == 4 )
{
cout << "Jesli chcesz zarezerwowac sale w pozinejszych terminach, rowniez prosimy o kontakt telefoniczny lub osobisty, " <<endl;
cout << " aby omowic wszelkie kwestie odnosnie daty, wystrojenia sali, tematyki, kosztow oraz cateringu" <<endl;
break;
else if( miesiac < 1 || miesiac > 4)
{
cout << "Wybrales zly numer. Prosze podac numer ponownie:" ;
cin >>miesiac;
}
}
}
else if( sala == 2)
{
cout << "Wrocimy do menu glownego, jesli chcesz wyjsc prosze wybrac opcje WYJSCIE Z PROGRAMU" <<endl;
menu();
}
else if( sala !=1) && (sala !=2)
{
cout << "Wybrales zly numer. Prosze podac numer ponownie:" ;
cin >> sala;
}
}
}


case 5:
{
system("cls");
cout << "Jesli chcesz zobaczyc raport kliknij 1. " <<endl;
cout << "Jesli nie, kliknij 2." << endl;
cin>> raport;
do while (raport !=1 && raport !=2)
{
if(raport ==1)
{
rozliczenie = l1+l2+l3+l4+l5+l6+l7+l8+l9+l10+l11+l12+l13+l14+l15;
cout << "Raport z dzisiejszego dnia wynosi = " << rozliczenie << " PLN " ;
break;
}
else if (raport ==2)
{
cout << "Wrocimy do menu glownego, jesli chcesz wyjsc prosze wybrac opcje WYJSCIE Z PROGRAMU" <<endl;
menu();
}
else if (raport !=1) & (raport !=2)
{
cout << "Wybrales zly numer. Prosze podac numer ponownie:" ;
cin >> raport;
}
}

}

case 6:
{
cout << " Dziekujemy za wizyte w naszej restauracji " ;
exit(0); 
 
}   
default:
{
cout << " Wybrales zly numer. Prosze podac numer ponownie: ";
menu();

}   
 
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
}
 
0

widze, ze nie ma case 4 i w zagniezdzonym case w case 1 nie ma defaulta, po prostu sa nie dokonczone z powodu braku sensownego pomyslu. da sie to jakos zrobic w prosty sposob?

0

A jak pozycji w menu będzie 100 to też tak będziesz ten kod pisał? A milion? Gdzie jest ta granica kiedy przestaniesz robić copy-paste i zaczniesz myśleć? Lekcja na dziś: pętle i tablice.

0

dzieki za odpowiedz, choc mysle ,ze petle dobrze ogarniam. tablice gorzej. poczytam i wstawie poprawiony kod, tablice w miejscu case 2 wstawic ? czy gdzies jeszcze miales na mysli. moze rozwin troche

2

Nie jestem pewien, ale chyba @Shalom mial na mysli to, zeby uzyc tablic i petli zamiast tych ifowo-switchowych potworow;p

0

Pomyśl jak byś to zrobił gdyby menu miało milion pozycji.

0

No dzieki, dzieki za odpowiedzi. Czy chodzi mniej wiecej o cos takiego? (kod niepelny)

int Wybor, Zamowienie, numer;

int main()
{
menu ();
cout << "MENU GLOWNE" << endl;
cout << "***********" << endl;
cout << "WITAMY W RESTAURACJI VENECJA" <<endl;
cout << "1.Wyswietl menu" << endl;
cout << "2. Zloz Zamowienie" << endl;
cout << "3. Rezerwacja sali" << endl;
cout << "4. Pokaz co zamowiles" << endl;
cout << "5. "Raport" <<endl;
cout << "6. Wyjscie z programu" << endl;
cout << " Prosze wybrac numer: " ;
cin >> Wybor;
int nr_zam[19]= { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 };
int Cennik[19] = { 15, 17, 18, 19, 20, 20, 22, 22, 24, 26, 28, 30, 5, 7, 5, 7, 6, 6, 6 };

char Menu[1000] = { 
{   *Margherita*  Skladniki: sos pomidorowy, bazylia, srednica = 40cm, }   
{   *Capricosa*   Skladniki: sos pomidorowy, ser, pieczarki, szynka, srednica = 40cm, }   
{   *Diabolo*       Skladniki: sos pomidorowy, papryczki chilli, oregano, srednica = 40cm, }   
{   *Wiejska*      Skladniki: sos pomidorowy, ser, cebula, czosnek, pomidory, szynka, srednica = 40cm, }   
{   *Miejska*      Skladniki: sos pomidorowy, ser , kurczak, papryka, kukurydza, srednica = 40cm, }   
{   *Klasyczna*  Skladniki: sos pomidorowy, ser, kurczak, pomidor, czerwona fasola, srednica = 40cm, }   
{   *Ameryka*    Skladniki: sos pomidorowy, ser, boczek, bekon, salami, srednica = 40cm, }   
{   *Studencka*  Skladniki: sos pomidorowy, podwojny ser, podwojny kurczak, bazylia, srednica = 40cm, }   
{   *Wegetarian* Skladniki: sos pomidorowy, ser, oregano, pomidor, czerwona fasola, bazylia, srednica = 40cm, }   
{   *Zwykla*       Skladniki: sos pomidorowy, ser mozzarella,kurczak, bazylia, srednica = 40cm, }   
{   *Hawajska*   Skladniki: sos pomidorowy, ser, banany, ananas, szynka, srednica = 40cm, }   
{   *Solo*           Skladniki: sos pomidorowy, ser, pomidor, boczek, bekon, oregano,papryczka chilli, srednica = 40cm, }   
{   *Coca Cola 1 L* , }   
{   *Coca Cola 2 L* , }   
{   *Fanta 1 L* , }   
{   *Fanta 2 L* , }   
{   *Zywiec 0,5 L* , }   
{   *Tyskie 0,5 L* , }   
{   *Lech 0,5 L* , }
}	


switch(Wybor)
{
 case 1:
cout << "MENU " <<endl;
cout << "********" <<endl;
for (i=0, i <=19, i++)
{
cout << nr_zam[i] << ". " << Menu[i] << " Cena: " <<cennik[i] << " PLN" <<endl; 
}                
cout << "Jesli chcesz cos zamowic prosimy wybrac opcje numer 2." <<endl;
menu();
}
case 2:
{
cout << "Jesli chcesz zlozyc zamowienie kliknij 1."
cout << "Jesli nie chcesz zlozyc zamowienia(wrocic do poprzedniego menu) kliknij 2."
cin >> Zamowienie;
do while (Zamowienie == 2)
{
if (Zamowienie==1)
{
cout << "Prosze podac numer zamowienia: ";
cin >> numer;
cout << "Zamowiles: " << nr_zam[numer-1] << ". " << menu[numer-1] << " . Dziekujemy !"<< endl;
cout << " Czy chcesz zamowic cos jeszcze ? (Jesli tak kliknij 1.  Jesli nie kliknij 2. ) " <<endl;
cin >> Zamowienie;
}
if else (Zamowienie != 1 && Zamowienie !=2)
{
cout << " Podales zly numer. Prosze wpisac numer ponownie" << endl;
cin >> Zamowienie;
}
if else (Zamowienie==2)
{
cout << " Wrocimy do Menu glownego, jesli chcesz wyjsc z programu prosze kliknac ' Wyjscie z programu ' " ;
menu()
}
}
}

Pytanie za milion punktow. Jak zrobic w tym przypadku opcje wyswietlania zamowienia?
moja wizja wyglada mniej wiecej tak, ze jak ktos cos zamowi kliknie dane zamowienie , wyskakuje pytanie czy cos jeszcze i jeszcze raz kilknie (zamowi 2ga rzecz) to zeby zapisywalo sie to do case nr.4 wyswietl zamowienie.
Jak widzicie dosc szybko pojmuje( tak mi sie wydaje ), wiec prosze o elokwetne odpowiedzi.

dodanie znacznika <code class="cpp"> - @furious programming

0
 int Wybor, Zamowienie, numer;

int main()
{
menu ();
cout << "MENU GLOWNE" << endl;
cout << "***********" << endl;
cout << "WITAMY W RESTAURACJI VENECJA" <<endl;
cout << "1.Wyswietl menu" << endl;
cout << "2. Zloz Zamowienie" << endl;
cout << "3. Rezerwacja sali" << endl;
cout << "4. Pokaz co zamowiles" << endl;
cout << "5. "Raport" <<endl;
cout << "6. Wyjscie z programu" << endl;
cout << " Prosze wybrac numer: " ;
cin >> Wybor;
int nr_zam[19]= { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 };
int Cennik[19] = { 15, 17, 18, 19, 20, 20, 22, 22, 24, 26, 28, 30, 5, 7, 5, 7, 6, 6, 6 };

char Menu[1000] = { 
{   *Margherita*  Skladniki: sos pomidorowy, bazylia, srednica = 40cm, }   
{   *Capricosa*   Skladniki: sos pomidorowy, ser, pieczarki, szynka, srednica = 40cm, }   
{   *Diabolo*       Skladniki: sos pomidorowy, papryczki chilli, oregano, srednica = 40cm, }   
{   *Wiejska*      Skladniki: sos pomidorowy, ser, cebula, czosnek, pomidory, szynka, srednica = 40cm, }   
{   *Miejska*      Skladniki: sos pomidorowy, ser , kurczak, papryka, kukurydza, srednica = 40cm, }   
{   *Klasyczna*  Skladniki: sos pomidorowy, ser, kurczak, pomidor, czerwona fasola, srednica = 40cm, }   
{   *Ameryka*    Skladniki: sos pomidorowy, ser, boczek, bekon, salami, srednica = 40cm, }   
{   *Studencka*  Skladniki: sos pomidorowy, podwojny ser, podwojny kurczak, bazylia, srednica = 40cm, }   
{   *Wegetarian* Skladniki: sos pomidorowy, ser, oregano, pomidor, czerwona fasola, bazylia, srednica = 40cm, }   
{   *Zwykla*       Skladniki: sos pomidorowy, ser mozzarella,kurczak, bazylia, srednica = 40cm, }   
{   *Hawajska*   Skladniki: sos pomidorowy, ser, banany, ananas, szynka, srednica = 40cm, }   
{   *Solo*           Skladniki: sos pomidorowy, ser, pomidor, boczek, bekon, oregano,papryczka chilli, srednica = 40cm, }   
{   *Coca Cola 1 L* , }   
{   *Coca Cola 2 L* , }   
{   *Fanta 1 L* , }   
{   *Fanta 2 L* , }   
{   *Zywiec 0,5 L* , }   
{   *Tyskie 0,5 L* , }   
{   *Lech 0,5 L* , }
}	


switch(Wybor)
{
 case 1:
cout << "MENU " <<endl;
cout << "********" <<endl;
for (i=0, i <=19, i++)
{
cout << nr_zam[i] << ". " << Menu[i] << " Cena: " <<cennik[i] << " PLN" <<endl; 
}                
cout << "Jesli chcesz cos zamowic prosimy wybrac opcje numer 2." <<endl;
menu();
}
case 2:
{
cout << "Jesli chcesz zlozyc zamowienie kliknij 1."
cout << "Jesli nie chcesz zlozyc zamowienia(wrocic do poprzedniego menu) kliknij 2."
cin >> Zamowienie;
do while (Zamowienie == 2)
{
if (Zamowienie==1)
{
cout << "Prosze podac numer zamowienia: ";
cin >> numer;
cout << "Zamowiles: " << nr_zam[numer-1] << ". " << menu[numer-1] << " . Dziekujemy !"<< endl;
cout << " Czy chcesz zamowic cos jeszcze ? (Jesli tak kliknij 1.  Jesli nie kliknij 2. ) " <<endl;
cin >> Zamowienie;
}
if else (Zamowienie != 1 && Zamowienie !=2)
{
cout << " Podales zly numer. Prosze wpisac numer ponownie" << endl;
cin >> Zamowienie;
}
if else (Zamowienie==2)
{
cout << " Wrocimy do Menu glownego, jesli chcesz wyjsc z programu prosze kliknac ' Wyjscie z programu ' " ;
menu()
}
}
}

1

Jest troszkę lepiej, ale nadal słabo.
Lekcja na dziś: struktury albo klasy. Po to właśnie są żebyś nie robił 3 osobnych tablic:

int nr_zam[19]= { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 };
int Cennik[19] = { 15, 17, 18, 19, 20, 20, 22, 22, 24, 26, 28, 30, 5, 7, 5, 7, 6, 6, 6 };
string Menu[1000] = { //

Tylko żebyś miał strukturę np.

struct Danie{
    string wpisWMenu;
    int cena;
    int nrZamowienia;
};

I tylko tablicę:

Danie menuRestauracji[19];

Nie ma wtedy ryzyka że przypadkiem ci się dane "rozjadą" bo dodasz cenę o 1 pozycje za wcześnie na przykład ;)

Poza tym ja bym te dane czytał z pliku jakiegoś żeby nie śmiecić nimi w kodzie.

0

Dzieki za odpowiedz, odezwe sie w przeciagu dwoch dni z poprawionym kodem. Sorki za spam, z goscia nie moge edytowac, czyli juz z klasami bede mogl zapisywac dane zamowienie i wyswietlac je tak?

1
Biały Młot napisał(a):

Sorki za spam, z goscia nie moge edytowac

Założenie konta to w porywach 30sec... ;>

Biały Młot napisał(a):

czyli juz z klasami bede mogl zapisywac dane zamowienie i wyswietlac je tak?

Bez klas też byś mógł. To, że przerobisz ten kod na taki normalniejszy, uzywajacy klas, tez magicznie nie spowoduje, ze bedzie wszystko działało, ale logika tych zamowien bedzie duzo czytelniejsza i bedzie mozna duzo prosciej dodawac nowe funkcjinalnosci (takie jak wypisanie, wczytanie, zmienianie, usuwanie itd itp)

0

ja bym to zrobił mniej więcej tak,

#include <iostream>
#include <map>
#include <vector>

struct Contents
{
    std::string desc;

    int price;
};

class Menu
{
public:
    static Menu init();

    void addPosition(std::string const& desc, int price);

    void show() const;

    int orderPosition(int pos) const;
private:
    std::map<int, Contents> contents_;
};

Menu Menu::init()
{
    Menu m;
    m.addPosition("Cola 1l", 4);
    m.addPosition("Pizza Serowa: Składniki: ser, ser, ser, srednica = 1cm", 15);
    m.addPosition("Wiejska: Skladniki: sos pomidorowy, ser, cebula, czosnek, pomidory, szynka, srednica = 40cm", 30);

    return m;
}

void Menu::addPosition(std::string const& desc, int price)
{
    static int pos = 1;
    contents_[pos++] = { desc, price };
}

void Menu::show() const
{
    std::cout << "Menu\n";
    for(auto const& pos : contents_) {
        std::cout << "Pos: " << pos.first << "\tDescription: " << pos.second.desc << "\tPrice: " << pos.second.price << std::endl;
    }
}

int Menu::orderPosition(int position) const
{
    auto it = contents_.find(position);
    if(it == std::end(contents_)) {
        std::cout << "Position: " << position << " doesn't exist in menu. Ślepaku.\n";
        return 0;
    } else {
        return it->second.price;
    }
}

int performAnOrder(Menu const& menu, std::vector<int> const& positions);

int main()
{
    auto menu = Menu::init();
    menu.show();

    int pos;
    std::vector<int> orderedPositions;
    while(true) {
        std::cout << "Which positions from the menu would you like to order? Ordering 0 finishes an order.\n";
        std::cin >> pos;
        if(pos == 0) {
            break;
        }
        orderedPositions.push_back(pos);
    }

    std::cout << "Total cost of your order: " << performAnOrder(menu, orderedPositions);
    
    return 0;
}

int performAnOrder(Menu const& menu, std::vector<int>const& positions)
{
    int price_total = 0;
    for(auto const& pos : positions) {
        price_total += menu.orderPosition(pos);
    }

    return price_total;
}

http://melpon.org/wandbox/permlink/V6Hgqji4TzCu4NmH

20 min roboty

modyfikowalne w dowolny sposób

0

@Biały Młot taka prawda objawiona: te wszystkie magiczne mechanizmy języka, jak na przykład klasy, nie zostały wymyślone żeby język był trudniejszy. Wiem że niektórym początkującym tak się czasem wydaje i myślą sobie "e tam, można to na pewno napisać bez XYZ". I mają racje, można napisać bez różnych mechanizmów, tylko że zwykle nie warto.
Takie rzeczy jak struktury, funkcje, klasy itd zostały wymyślone po to żeby programowało się łatwiej i szybciej. Co prawda wymaga to poświęcenia kilku minut na zrozumienie "jak tego używać", ale oszczędność czasu jest potem gigantyczna.

0
struct pizza{
char menu[1000];
int nr_zamowienia[24];
float cena[24];
string skladniki[1000];
};

int main()
{
pizza Zwykla = {"Zwykla" , 1 , 17.99 , "Ser, Pieczarki, Szynka"};

return 0;
}

cos ala to ?

0

A składniki czemu tak? Nie lepiej struktura "struct skladniki" a w pizzy tablica skladników? ;)

0

rozumiem idee, ale moglbys zobrazowac na kodzie wyzej ? :)

Z tego co rozumiem to jesli zrobie tak skladniki to pozniej latwiej bedzie zrobic opcje np. dodaj pizze do menu i dodac skladniki jeden po drugim ? z perspektywy konsoli oczywiscie

0
struct Skladnik{
    string name;
};
struct Pizza{
   int id; //chociaż nie wiem po co...
   String description;
   float cena[24];
   Skladnik skladniki[100];
};

Ale ja bym przechowywał raczej cenę składnika a same składniki np. jako vector<Skladnik> żeby nie martwić się o rozmiar tablicy. Wtedy cenę pizzy możesz liczyć dynamicznie licząc sumarycznie cene składników + jakąś stałą za placek. Tzn:

struct Skladnik{
    string name;
    double cena;
};
struct Pizza{
   String description;
   vector<Skladnik> skladnik;
};

Dzięki temu możesz dodawać dowolne składniki do pizzy ;)

0

Witam ponownie społeczność internetu.
Z powodów zdrowotnych musialem przerwac prace nad projektami, a zaliczenie tuz tuz. Chcialbym prosic o nakierowanie w kodzie. Jest to kod niepelny. Duzo rzeczy moze sie wykluczac, bo caly czas uczylem sie podstaw, a dopiero teraz przeszedlem z proceduralnego programowania na obiektowe. Chcialbym aby program: BYL W STANIE SKLADAC ZAMOWIENIA i zapisywac je do np. innej funkcji : wyswietl wszystkie zamowienia. oraz zeby byl w stanie podliczyc ceny wszystkich zlozonych zamowien w raporcie dobowym. Do tego moze jakis maly interface casowy(niekoniecznie) w mainie,ktorego nie mam tutaj. Bardzo goraco prosze o gotowe kody wklejone w moj plus male wyjasnienie(choc jesli przejrzysty kod to ogarne), bo rozmyslam i nie wiem czy dobrze to wszystko robie. Program robiony w notatniku , kompilowac bede jutro na innym komputerze. Wyczuwam tutaj brak logicznego wyjscia, a wy bardziej zaawansowani na pewno jestescie w stanie to ogarnac w moment. Pozdrawiam i goraco prosze o pomoc.

 
NAGLOWKI:

#include <iostream>

using namespace std;

class Pizza
{
public:
int pozycja;
int zamow; 	
int nr_zam;                 // numer zamowienia do pizzy
string nazwa;             //nazwa pizzy lub napoju
string skladniki;         // sklad pizzy
double cena;             // cena pizzy i napoi
double rap;	        // zmienna przechowujaca raport dobowy
void dodajdomenu();              //dodaj do menu 
void wyswietl();           	//wyswietl menu
void zamowienie();
void wyswietl_zamowienia();
void raport();
};
#include <iostream>
#include "pizza.h"
#include <fstream>       //plik
#include <cstdlib>        //funkcja exit  ,cls

using namespace std;


void Pizza::dodajdomenu()
{
cout<< "DODAWANIE PIZZY LUB NAPOJI DO KLASY"<<endl;
cout<< " ILE POZYCJI CHCESZ DODAC?";
cin>>pozycja;
if(pozycja>=0)
{
for(i=0; i<pozycja; i++)
   {
cout<<"Numer zamowienia: "<< nr_zam[i+1]; << endl;
cout<< "Podaj nazwe: ";
cin >>nazwa;
cout<<"\nPodaj sklad(zawartosc po przecinku): ";
cin >> skladniki;
cout<< "Podaj cene: ";
cin >> cena;
cout << "Dodales Pizze/napoj: "<< nr_zamowienia[i+1]<<" . "<<nazwa;
cout << " . " << skladniki << " . " << cena;
nr_zam[i+1]=cena[i];         //potrzebne do raportu dobowego
system("cls");
   }
}
else
  {
cout << " Nie mozna dodac mniej pozycji niz 1. Program zostanie wylaczony!;
exit(0);
  }
}

void Pizza::wyswietl()
{
cout << Wczesniej dodales: "<< pozycja << "pozycja/i " <<endl;
cout << " MENU: \n**********";
for(i=0; i<pozycja; i++)
{
nr_zam[i+1] <<" . " <<nazwa<<" . "<<skladniki<<" . "<<cena<< " zl"<<endl;
}
}

void Pizza::zamowienie()
{

cout << " Prosze wybrac numer zamowienia: " <<endl;
cin >> zamow;
if( zamow> pozycja) || (zamow < pozycja)
{
cout << " Podales zly numer zamowienia. Program zostanie wylaczony; ";
exit(0);
}
else
{

}


void Pizza::wyswietl_zamowienia()
{
}
void Pizza::raport()
{
}
 
1

Pracuj ze środowiskiem, które wyłapie w locie twoje błędy czy niedomknięte nawiasy i cudzysłowy.

Btw, dlaczego twoja pizza wyświetla zamówienia, robi je i dodaje kolejne pozycje do menu? Ahh te cięcia w budżecie...

0

tak nazwalem swoja klase. bardziej odpowiednia nazwa byloby zarzadzajrestauracja

ale to tylko nazewnictwo. mam rozumiec, ze lepiej zrobic kilka klas tak ?

ahh dopiero teraz zrozumialem. Dlaczego robi tak ? bo to jest plik oddzielny. do tego dojdzie jeszcze glowny plik main w ktorym zastosuje odpowiednio ulozone funkcje ( o ile dojde do tego jak to zrobic ). juz zakladam konto, zeby moc edytowac posty

2

Nie ważne jak do tego doprowadziłeś.
Jeśli pizza przyjmuje zamówienia, to wiedz, że coś jest nie tak.

0
 
#include <iostream>
#include <fstream>       
#include <cstdlib> 

using namespace std;

class Pizzeria
{
public:
int nr_menu;			//wykorzystane
int p;					//wykorzystane pozycja
int z; 					//zamowienie
int nr_zam;                 //  zamowienia do pizzy
string nazwa;             //nazwa pizzy lub napoju
string skladniki;         // sklad pizzy
double cena;             // cena pizzy i napoi
double rap;	        // zmienna przechowujaca raport dobowy

void dodajdomenu()
{
cout<<"Numer zamowienia: "<< nr_zam[i+1]; << endl;
cout<< "Podaj nazwe: ";
cin >>nazwa;
cout<<"\nPodaj sklad(zawartosc po przecinku): ";
cin >> skladniki;
cout<< "Podaj cene: ";
cin >> cena;
cout << "Dodales Pizze/napoj: "<< nr_zamowienia[i+1]<<" . "<<nazwa;
cout << " . " << skladniki << " . " << cena;
system("cls");
}

void Pizza::wyswietl()
{
cout << Wczesniej dodales: "<< p << "pozycja/i " <<endl;
cout << " MENU: \n**********";
for(i=0; i<p; i++)
{
nr_zam[i+1] <<" . " <<nazwa<<" . "<<skladniki<<" . "<<cena<< " zl"<<endl;
}
}
void zamowienie()
{
cout <<" Prosze wybrac numer zamowienia: "<< z;
cin>> z;
if ((z>p) || (z< p))
{
cout << " Wybrales zle zamowienie. Program zostanie wylaczony!";
exit(0);
}
else
{
cout << "Zamowiles: "<< nr_zam[z+1] << " . "<<nazwa[z] <<" . "<< skladniki[z] <<" . " << cena[z] << endl;
}
}


void raport();
{

}

void wyswietl_zamowienia();
{

}
};


int main()
{
cout << " WITAMY W PIZZERII LA COSTA" <<endl;
cout << " 1. STWORZ MENU." <<endl;
cout << " 2. WYSWIETL MENU."<<endl;
cout << " 3. ZLOZ ZAMOWIENIE."<<endl;
cout << " 4. WYSWIETL ZAMOWIENIA. " <<endl;
cout << " 5. RAPORT DOBOWY. " <<endl;
cout << " 6. WYJSCIE Z PROGRAMU. " <<endl;
cin >> nr_menu;

case 1:
{ 
cout << "Ile pozycji chcesz dodac do Menu? ";
cin << p; 
if(p<= 0)
{
cout << " Najmniej mozesz dodac 1 pozycje. Program zostanie wylaczony.";
exit(0);
}
else
{
Pizza numer[p]
//suma=0
for (int i=0; i<p; i++)
{
numer[p].dodajdomenu()
}
}
break;
}

case 2:
{
wyswietl();
break;
}

case 3:
{
zamowienie();
break;
}
case 4:
{

break;
}
case 5:
{

break;
}
case 6: exit(0);

default:
    {
cout << " Wybrales zly numer. Program zostanie wylaczony!! " <<endl;
exit(0);
    }

return 0;
}

Moglby ktos pomoc z void raport void wyswietl zamowienie i ostatnimi casami ?

0

jak widzisz Twoj kod zaczyna samozaplon.
Wez sformatuj kod poprawnie zanim spali sie ze wstydu

0

Powie mi ktos co tu jest zle?

 #include <iostream>
#include <fstream>       
#include <cstdlib> 
#include <vector>

using namespace std;
class Pizza
{
	public:
	float cena;
	string nazwa;
	vector <string> skladniki;
	Pizza(string n,float c,string s1="brak",string s2="brak", string s3="brak", string s4="brak", string s5="brak", string s6="brak", string s7="brak", string s8="brak", string s9="brak", string s10="brak")
         : nazwa(n), cena(c)
{
    if (s1 != "brak") skladniki.push_back(s1); 
	if (s2 != "brak") skladniki.push_back(s2); 
	if (s3 != "brak") skladniki.push_back(s3); 
	if (s4 != "brak") skladniki.push_back(s4); 
	if (s5 != "brak") skladniki.push_back(s5); 	
	if (s6 != "brak") skladniki.push_back(s6); 
	if (s7 != "brak") skladniki.push_back(s7); 
	if (s8 != "brak") skladniki.push_back(s8); 
	if (s9 != "brak") skladniki.push_back(s9); 
	if (s10!= "brak") skladniki.push_back(s10); 
}
};

class Pizzeria
{
	public:
     vector <Pizza> menu; 
	vector < vector < int > > zamowienia; 	     
	    
	void dodajdomenu()
	{
   		float c=0.0;
		string n[]{" brak ", " brak ", " brak", " brak ", " brak", " brak ", " brak", " brak "," brak", " brak "}
		int ilosc=0;
		cout<< "Podaj nazwe: ";
		cin >>n;
		cout<<"\nPodaj ilosc skladnikow: ";
		cin >> ilosc;
			if ((ilosc <1) || (ilosc >10))
			{
			cout << " Podales za duzo lub za malo skladnikow.Spobuj ponownie.";
			return;
			}
				for (int i=0; i<ilosc; i++)
				{
				cout << " Podaj skladnik: " << i + 1 << " ";
				cin >> skl[i]; 
				}
					cout<< "Podaj cene: ";
					cin >> c;
					menu.push_back(Pizza(n,c, skl[0], skl[1], skl[2], skl[3], skl[4], skl[5], skl[6], skl[7], skl[8], skl[9] ));
					cout << " Udalo sie dodac do menu ! ";
	
	}
	void wyswietl()
	{
		for (int i = 0; i < menu.size(); i++)
		{
		cout << i+1 << ". " << menu[i].nazwa << " (";
			for (int j = 0; j < menu[i].skladniki.size(); i++)
			{
			cout << menu[i].skladniki[j] << " ";
			}
				cout << "), cena " << menu[i].cena << " PLN" << endl;
	}
}



	void zamowienia()
	{
		vector<int>nowe;
		int nr_pizzy=0 ;
		int cena=0;
		wyswietl();
		cout << "Wybierz numer pizzy lub 0 aby zakonczyc dodawanie";
		while(nr_pizzy!=0)
		{
			cin>>nr_pizzy;
			if(nr_pizzy==0)
				{
				break;
				}
				nowe.push_back(nr_pizzy-1)
				cout<<" Wybrano: "<<menu[nr_pizzy].nazwa;
				}
					for(int i=0, i<nowe.size(); i++)
					{
					cena+=menu[nowe[i]].cena;
					}
					cout<<"w sumie do zaplaty: " << cena;
					zamowienia.push_back(nowe); 
		} 
			
			
		void raport()
		{
			for (int i = 0; i<zamowienia.size(); i++)
			{
				for (int j = 0; j<zamowienia.size(); j++)
				{
				cout << zamowienia[i][j].cena << "PLN\n";
				lacznie += zamowienia[i][j].cena;
				};
			cout << " Lacznie zarobiles/as: " << lacznie;
			};
		sleep(3000);
		return 0;
		}
		
};


main()
{
	
	int opcja;
	
	cout<< "Witamy w PizzeriDagrasso." <<endl;
	cout<< "Prosze wybrac z menu glownego: " <<endl;
	cout<< "1.Dodaj do menu." <<endl;
	cout<< "2.Wyswietl menu." <<endl;
	cout<< "3.Zloz zamowienie." <<endl;
	cout<< "4.Raport dobowy." <<endl;
	cout<< "5.Wyjscie z programu." <<endl;
	cout<< "Wybieram : ";
	
	cin>>opcja;
	switch(opcja)
	{
		case 1: dodajdomenu();    break;
		case 2: wyswietl();       break;
		case 3: zamowienia();     break;
		case 4: raport();  break;
		case 5: 
		{
		cout<<"Program zostanie wylaczony.";
		exit(0);	
		}
		default: 
		{
		cout <<"Wybrano zly numer.";
		return 0;
		}
 	}
	
	
	return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1