Jambo
Jambo
  6 czerwca 2009 (pierwszy post)

WITAM.
ZAPROJEKTUJ KLASĘ KTÓRA POZWOLI UŻYTKOWNIKOWI NA WYDAWANIE RESZTY Z OKREŚLONEJ PRZEZ NIEGO SUMY A ŻĄDANEJ PRZEZ PROGRAM.
PROGRAM REPREZENTUJĄCY KASIERKĘ PROSI O PODANIE KWOTY, UŻYTKOWNIK WPROWADZA WARTOŚĆ CAŁKOWITĄ A PROGRAM ZWRACA RÓŻNICĘ.
ZADANIEM PROGRAMU JEST WYZNACZENIE MAKSYMALNEJ WARTOŚCI W POSTACI GOTÓWKI.

CZYLI ŻE POKAZUJE MI JAKIE MAM WYDAĆ DELIKWENTOWI MONETY I BANKNOTY NAJLEPIEJ O NAJWIĘKSZYM NOMINALE. W GRĘ WCHODZĄ MONETY
100,50,20,10,5,2,1

PROSZĘ WAS NIE USUWAJCIE ! PROSZĘ TEŻ KOGOŚ NA PW KTO TO MOŻE ZROBIĆ ! MAM WŁAŚNIE EGZAMIN Z INFORMATYKI

ChangeMee
ChangeMee
  6 czerwca 2009

? :woot::woot:

waskirk
Posty: 284 (po ~902 znaków)
Reputacja: 0 | BluzgometrTM: 0
waskirk
  7 czerwca 2009

Patrząc na zadanie to sory jeżeli ciebie urażę, ale nie reprezentujesz zbyt wyrafinowanego poziomu z algorytmiki lub programowania. Sytuacja jest prosta, najpierw tworzysz klasę ze zmiennymi podstawowymi których będziesz potrzebował, a po tem w programie robisz całą resztę, czyli wprowadzenie ceny, kwoty od kupującego, dalej sprawdzenie czy należy wydać resztę czy klient musi jeszcze dopłacić (tutaj musi nastąpić konwersja, na wartość bezwzględną), no i dzielenie kolejno przez 100, 50, 20, 10, 5, 2, 1, oczywiście używając operatora modulo. W Dev-C++ 4.9.9.2 wygląda to tak:
#include -cstdlib-
#include -iostream-

class klasa
{
public:
int wartosc_klient;
int wartosc_kasjer;
int wartosc_roznica;

};

using namespace std;

int main(int argc, char *argv[])
{
klasa kasa;
cout--"Wprowadz cene na kase: ";
cin>> kasa.wartosc_kasjer;
cout--"Wprowadz kwote od klienta: ";
cin--kasa.wartosc_klient;
kasa.wartosc_roznica = kasa.wartosc_klient - kasa.wartosc_kasjer;
if(kasa.wartosc_roznica -wieksze- 0)
{
cout--"Nalezy Wydac klientowi kwote: "--kasa.wartosc_roznica--" Np. w takich nominalach:"--endl;
}
else if(kasa.wartosc_roznica -mniejsze- 0)
{
kasa.wartosc_roznica = kasa.wartosc_roznica * (-1);
cout--"Klient Powinien doplacic kwote: "--kasa.wartosc_roznica-- "Np. w takich nominalach: "--endl;

}
else
{
cout--"Klient wplacil rownowartosc ceny"--endl;
goto koniec;
}

int zl100, zl50, zl20, zl10, zl5, zl2, zl1;
zl100 = kasa.wartosc_roznica / 100;
cout--"100 zl x "-- zl100--endl;
kasa.wartosc_roznica = kasa.wartosc_roznica % 100;
zl50 = kasa.wartosc_roznica / 50;
cout--"50 zl x "--zl50--endl;
kasa.wartosc_roznica = kasa.wartosc_roznica % 50;
zl20 = kasa.wartosc_roznica / 20;
cout--"20 zl x "--zl20--endl;
kasa.wartosc_roznica = kasa.wartosc_roznica % 20;
zl10 = kasa.wartosc_roznica / 10;
cout--"10 zl x "--zl10--endl;
kasa.wartosc_roznica = kasa.wartosc_roznica % 10;
zl5 = kasa.wartosc_roznica / 5;
cout--"5 zl x "--zl50--endl;
kasa.wartosc_roznica = kasa.wartosc_roznica % 5;
zl2 = kasa.wartosc_roznica / 2;
cout--"2 zl x "--zl20--endl;
kasa.wartosc_roznica = kasa.wartosc_roznica % 2;
zl10 = kasa.wartosc_roznica / 1;
cout--"1 zl x "--zl10--endl;
kasa.wartosc_roznica = kasa.wartosc_roznica % 1;
koniec:
system("PAUSE");
return EXIT_SUCCESS;
}

Tutaj na końcu zaprezentowałem takie dzielenie na piechotę. Oczywiście można użyć pętli for, która może się tobie wydać troszkę mniej czytelna, ale na pewno bardziej wydajna i lepiej oceniana niż ten sposób. A w pętli powinno wyglądać tak:

int zl[7][2];
zl[0][0] = 100; zl[1][0] = 50; zl[2][0] = 20; zl[3][0] = 10; zl[4][0] = 5; zl[5][0] = 2; zl[6][0] = 1;
for(int i = 0; i -mniejszy-= 6; i++)
{
zl[1] = kasa.wartosc_roznica / zl[0];
cout--zl[0]--" zl x "--zl[1]--endl;
kasa.wartosc_roznica = kasa.wartosc_roznica % zl[0];
}

Przez to że forum nie obsługuje wszystkich znaków zamiast znaków nierówności wprowadziłem '--', jakie powinny być sam się domyśl, a w pętlach i warunkach napisałem jakie być powinny, np -mniejsze-.

powodzenia, i więcej się ucz, skoro już siedzisz przed kompem, a mniej przesiaduj na fotce, może kiedyś się zmierzymy na SPOJu ;)

Dyskusja na ten temat została zakończona lub też od 30 dni nikt nie brał udziału w dyskusji w tym wątku.