Projekt- tablice znakowe, struktury itp...

Awatar użytkownika
marloon
Użytkownik
Użytkownik
Posty: 25
Rejestracja: 31 sty 2010, o 18:44
Płeć: Kobieta
Lokalizacja: Opoczno
Podziękował: 5 razy
Pomógł: 1 raz

Projekt- tablice znakowe, struktury itp...

Post autor: marloon »

No więc mam napisać takowy program 8-)

Napisać program dokonujący rezerwacji na wycieczkę na długi majowy weekend.
Wycieczka jest przewidziana na maksimum 40 osób. Każdy uczestnik przy zapisie ma wyznaczone miejsce
w autokarze, poza tym deklaruje chęć nocowania w pokoju z łazienką lub bez (niższa cena) oraz
ma możliwość wykupienia za dodatkową opłatą posiłków na stołówce.
Po dokonaniu rezerwacji program drukuje potwierdzeni zawierające:

- imię i nazwisko uczestnika
- nr miejsca w autokarze
- pokój z łazienką czy bez
- z posiłkami czy bez
- całkowitą cene

poza tym program ma możliwość wydrukowania pełnej listy uczestników z danymi
dotyczącymi wybranych przez nich opcji (pokoj z lazienka, posilki, cena).
Program podaje również całkowity wpływ do kasy.


narazie napisałam tyle:

Kod: Zaznacz cały

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

struct uczestnik{ 
char imie[20]; 
char nazwisko[20]; 
bool lazienka; 
bool posilki; 
int cena; 

}; 

uczestnik pobierz() 
{ 
uczestnik odpowiedz; 
char odp; 
int cena,cenal,cenap; 
cena=200;  //cena wycieczki
cenal=40; // cena lazienki
cenap=70; //cena posilkow

cout<<"Podaj imie:"<<endl; 
cin>>odpowiedz.imie; 
cout<<"Podaj nazwisko:"<<endl; 
cin>>odpowiedz.nazwisko; 
cout<<"Chcesz pokoj z lazienka?(T/N)"<<endl; 
cin>>odp; 
if(odp=='T' || odp=='t') 
{ 
odpowiedz.lazienka=true; 
cena=cena+cenal; 
odpowiedz.cena=cena; 

} 
else 
{ 
odpowiedz.lazienka=false; 
cena=cena; 
odpowiedz.cena=cena; 
} 
cout<<"Chcesz posilki?(T/N)"<<endl; 
cin>>odp; 
if(odp=='T' || odp=='t') 
{ 
odpowiedz.posilki=true; 
cena=cena+cenap; 
odpowiedz.cena=cena; 
} 
else 
{ 
odpowiedz.posilki=false; 
cena=cena; 
odpowiedz.cena=cena; 
} 

cout<<endl; 

cout<<"Imie:"<<" "<<odpowiedz.imie<<endl; 
cout<<"Nazwisko:"<<" "<<odpowiedz.nazwisko<<endl; 
cout<<"Lazienka:"<<" "<<boolalpha<<odpowiedz.lazienka<<endl; 
cout<<"Posilki:"<<" "<<odpowiedz.posilki<<endl; 
cout<<"Calkowity koszt wycieczki wynosi:"<<" "<<odpowiedz.cena; 

cout<<endl; 
cout<<endl; 
} 


int main() 
{ 
uczestnik tablica[40]; 

char z; 


for(int i=0;i<40;i++) 
{ 
cout<<"Witaj w MENU wycieczki na weekend majowy"<<endl; 
cout<<endl; 
cout<<"Cena wycieczki to 200zl, mozna miec pokoj z lazienka za dodatkowa oplata 40zl o raz posilki za 70zl"<<endl; 
cout<<endl; 
cout<<"Co chcesz wykonac ?"<<endl; 
cout<<"|1| - dopisz uczestnika"<<endl; 
cout<<"|2| - wydrukuj cala liste uczestnikow"<<endl; 
cout<<"|3| - zakonczyc program"<<endl; 
cout<<endl; 
cin>>z; 

switch(z) 
{ 
case '1': cout<<"Dopisywanie uczestnika"<<endl; 
tablica[i]=pobierz(); 
break; 
case '2': cout<<"Pelna lista uczestnikow:"<<endl; 
break; 

case '3': return 0; 
default: cout<<"Podales zla liczbe z menu, wybierz ponownie =]" <<endl; 
} 

cout<<endl; 
} 

cin.get(); 
cin.get(); 
return 0; 
}  

No i generalnie mam problem z tym całkowitym zliczaniem do kasy, nie wiem jak to kompletnie zrobić i żeby mi wyświetlało po wybraniu opcji 2 całą listę uczestników z tym wpływem do kasy oraz numer w autokarze, jakieś wskazówki ? Będę wdzięczna :)
Ostatnio zmieniony 25 maja 2010, o 12:06 przez miki999, łącznie zmieniany 2 razy.
Powód: Poprawa wiadomości. Nie używaj Caps Locka.
Awatar użytkownika
Sokół
Użytkownik
Użytkownik
Posty: 451
Rejestracja: 17 wrz 2006, o 19:22
Płeć: Mężczyzna
Lokalizacja: Zielona Góra
Podziękował: 15 razy
Pomógł: 55 razy

Projekt- tablice znakowe, struktury itp...

Post autor: Sokół »

Zmieniłbym konstrukcję programu,

Kod: Zaznacz cały

for(int i=0;i<40;i++){(...)cout<<"Co chcesz wykonac ?"<<endl;cout<<"|1| - dopisz uczestnika"<<endl;cout<<"|2| - wydrukuj cala liste uczestnikow"<<endl;cout<<"|3| - zakonczyc program"<<endl;(...)}  
Przy czterdziestokrotnym wybraniu dwójki program się zakończy, bez naszej wyraźnej intencji. Zamiast tego można to wstawić do while(1), bo 3 z case i tak zakańcza program. Zrób zmienną miejsce wskazującą na to, ile jest zajętych miejsc (rola analogiczna do int i w pętli for), która będzie się zwiększała o 1 po każdym dopisaniu uczestnika. W razie wybrania dwójki zrób skorzystaj z fora(int i=0; i<miejsce;i++), i w tej pętli umieść wyświetlanie danych i-tego uczestnika. A jeśli chodzi o sumowanie całej kwoty, to stwórz przed pętlą for zmienna suma_calkowita=0, i w pętli po prostu dodawaj do niej cenę wycieczki i-tego uczestnika. Po przebiegu pętli będziesz miał całkowitą kwotę.

Wizualnie i estetycznie też kod wymagałby kilku poprawek, w typie strukturalnym można ustawić pewne wartości na domyślne, stąd np. cenę można ustawić od razu na 200.-- wtorek, 25 maja 2010, 10:38 --i wpisuj kod w znaczniki code, jest czytelniej.
ODPOWIEDZ