Automat do kawy - metoda wydawania - obliczanie reszty...

anika91
Użytkownik
Użytkownik
Posty: 172
Rejestracja: 11 paź 2009, o 19:54
Płeć: Kobieta
Lokalizacja: Gdańsk
Podziękował: 67 razy

Automat do kawy - metoda wydawania - obliczanie reszty...

Post autor: anika91 »

Witam ! Mam taki problem, mam napisać klasę Automat ,której obiekty imitują pracę automatu do kawy.

Tworząc nowy obiekt podaję ''cenę kawy - jako wartość double , i nazwe automatu jako String):

Kod: Zaznacz cały

 Automat a=new Automat(1.50, "Automat Szkolny");
ponadto mam metodę wydaj kawę , w której podaje dwa parametry - podaję wartość za którą chcę kupić kawę , ma wyglądać przykładowo tak:

Kod: Zaznacz cały

 a.wydajKawe(1,10);
z wywołania tej metody (tak mi się wydaje , widząc tam przecinek) , wynika że metoda ta musi mieć dwa parametry - jakby oddzielnie dla 'złotówek' i dla 'groszy' . No i tutaj mam problem taki, bo po wywołaniu tej metody program ma obliczać ile Reszty ma mi wydać automat... I z tym mam problem. Dla powyższego przykładu (tworząc automat i w konstruktorze ustawiając cene 1.50 i następnie wywołując metodę wydajKawę(3,60) , powinnam dostać komunikat:

Kod: Zaznacz cały

Wydanie kawy: SMACZNEGO !
              + reszta: 2 zl 10 gr  

inny przykład :

Kod: Zaznacz cały


 Automat b=new Automat(1.20, "Automat w Pracy");
 b.wydajKawe(2,0);

(komunikat):

Wydanie kawy: SMACZNEGO !
              + reszta: 80 gr  
Serdecznie dziękuje za pomoc, walczę z tym liczeniem tej reszty ale nic mi nie wychodzi .
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

Automat do kawy - metoda wydawania - obliczanie reszty...

Post autor: kadiii »

Rozumiem, że masz problem w tym, że funkcja ma 2 parametry(zł,gr) zamiast jednego(zł). Na szczęście złote zachowują sie tak jak zwykłe liczby dziesiętne(nie to co np. godzina w zegarku):

Kod: Zaznacz cały

void Automat::wydajKawe(int zl,int gr)
{
   int reszta;
   reszta=zl * 100 + gr - cena * 100;
   gr=reszta % 100;
   zl=reszta / 100;
   wypiszReszte(zl,gr); // <- zostawiam do samodzielnego utworzenia
}
anika91
Użytkownik
Użytkownik
Posty: 172
Rejestracja: 11 paź 2009, o 19:54
Płeć: Kobieta
Lokalizacja: Gdańsk
Podziękował: 67 razy

Automat do kawy - metoda wydawania - obliczanie reszty...

Post autor: anika91 »

W końcu jakoś wczoraj napisałam to, ale wydaje mi się że jest tutaj dużo niepotrzebnych rzeczy i trochę na okrętkę :

Kod: Zaznacz cały

public void wydajKawe(double zlotowki, double grosze){
		
		if (zlotowki+ (grosze)/100 <cena){
			
			System.out.println("Nie kupisz kawy ! - za mało pieniedzy");
		}else {
				
			
			double grosze1 = zlotowki*100+grosze;

			double grosze2 = cena*100;
				
				if (grosze2>=grosze1){

					double suma = grosze2-grosze1;

			
	System.out.println("Wydanie kawy: Here you are!");
	System.out.println("+reszta: "+(int)suma/100+" zł "+(int)suma%100+"gr.");				

				}else
					if(grosze2<=grosze1){
						
						double suma = grosze1-grosze2;
						
				System.out.println("Wydanie kawy: Here you are!");
				System.out.println("+reszta: "+(int)suma/100+" zł "+(int)suma%100+" gr.");
							
					}
					
			       }
	}

Zagmatwałam chybam, rzutowałam te parametry double jako int i chyba to nie dobra metoda....
ODPOWIEDZ