Wydawanie reszty zliczające ilość nominałów

0

Jak przerobić poniższy kod, aby pokazywał w jakich nominałach i w jakiej ilości powinna zostać wydana reszta wprowadzona z klawiatury?

#include <iostream>
using namespace std;
int wiele(int kwota)
{
  int nominaly[5]={20,10,5,2,1};
  int ile=0;
  for(int i=0;i<5;i++)
  {
      ile=ile+kwota/nominaly[i];
      kwota=kwota%nominaly[i];
  }
  return ile;
}
int main()
{
  cout<<wiele(11)<<endl;
  cout<<wiele(99);
  return 0;
}

mam już napisany program do wydawania reszty, ale uparto się że ma być to modyfikacja powyższego kodu z "int wiele".
poniżej zamieszczam moją wersję:

#include <iostream>
using namespace std;
 
int main(int argc, char *argv[])
{
int monety[9]={500, 200, 100, 50, 20, 10, 5, 2, 1};
int reszta, ilosc, i;
cout << "Podaj prosze kwote reszty jaka chcesz wydac?" << endl;
cin >> reszta;
cout << "Reszta z " << reszta << " zl zostanie wydana nastepujacymi nominalami:" << endl;
i=0;
while (reszta>0)       
{
if (reszta>= monety[i])  
{
ilosc=reszta / monety[i];   
reszta=reszta-(monety[i]*ilosc);
cout << monety[i] << " zl x " << ilosc << endl; 
}
i++;            
}
return 0;
}

0

Jak rozumiesz oby dwa kody to nie rozumiem z czym masz problem?
Jeżeli zaś nie rozumiesz to przeczytaj byłe kurs z podstaw powinno wystarczyć pierwsze 25% i zrobić w kilka sekund.
Jeżeli zaś nie chcesz się uczyć to zostaje dział ogłoszenia drobne.

0
#include <iostream>
using namespace std;
int wiele(int kwota)
{
  int nominaly[9]={500, 200, 100, 50, 20, 10, 5, 2, 1};
  int ile=0;
  for(int i=0;i<9;i++)
  {
      ile=kwota/nominaly[i];
      kwota=kwota-(nominaly[i]*ile);
      cout<<nominaly[i]<<" zł x "<<ile<<endl;
  }
  return ile;
}
int main()
{
  int kwota;
  cout<<"Podaj prosze kwote reszty jaka chcesz wydac?"<<endl;
  cin>>kwota;
  cout<<wiele(kwota)<<endl;
  return 0;
}

Wynik jest taki:
Podaj prosze kwote reszty jaka chcesz wydac?
255
500 zl x 0
200 zl x 1
100 zl x 0
50 zl x 1
20 zl x 0
10 zl x 0
5 zl x 1
2 zl x 0
1 zl x 0
0

Ale jak zmodyfikować tak aby nie pokazywało nominałów których nie wydaje?

2

użyj if

Ale cała funkcja nie ma dla mnie sensu - co ona ma zwracać?

0
kq napisał(a):

użyj if

Ale cała funkcja nie ma dla mnie sensu - co ona ma zwracać?

Podaję się kwotę reszty jaką należy wydać, a program ma pokazać w jakich nominałach i w jakiej ilości możną ją wydać

1
  1. funkcja ma totalnie bezsensowną nazwę albo ma wypisać na ekran odpowiednie kwoty wtedy - ShowSplitAmount, albo zwracać tablicę rekordów '{ int count,banknote }' wtedy SplitAmount
  2. skoro funkcja wypisuje to nie powinna nic zwracać, czyli void
  3. skoro nominały są niezmieniane (w trakcie działania) to warto użyć static const int
  4. nazewnictwo http://forum.4programmers.net/1208091 sensowna nazwa dla tablicy banknotes
  5. ponieważ nie interesuje ci pozycja w tablice to warto użyć foreach czyli for(int amount:banknotes)
  6. deklaracja zmiennej ile powinno być dopiero tam gdzie jest na to potrzeba, czyli int count=value/amount;
  7. x=x-y; warto zapisać jako x-=y;
  8. jak chcesz aby jakiś wiersz się wykonywał tylko przy pewnym warunku to otocz ten wiersz if'em zaś w tym if'e podaj warunek.
0
_13th_Dragon napisał(a):
  1. funkcja ma totalnie bezsensowną nazwę albo ma wypisać na ekran odpowiednie kwoty wtedy - ShowSplitAmount, albo zwracać tablicę rekordów '{ int count,banknote }' wtedy SplitAmount
  2. skoro funkcja wypisuje to nie powinna nic zwracać, czyli void
  3. skoro nominały są niezmieniane (w trakcie działania) to warto użyć static const int
  4. nazewnictwo http://forum.4programmers.net/1208091 sensowna nazwa dla tablicy banknotes
  5. ponieważ nie interesuje ci pozycja w tablice to warto użyć foreach czyli for(int amount:banknotes)
  6. deklaracja zmiennej ile powinno być dopiero tam gdzie jest na to potrzeba, czyli int count=value/amount;
  7. x=x-y; warto zapisać jako x-=y;
  8. jak chcesz aby jakiś wiersz się wykonywał tylko przy pewnym warunku to otocz ten wiersz if'em zaś w tym if'e podaj warunek

Oczywiście że funkcja ma bezsensowną nazwę - zresztą tak samo jak większość pozostałych absurdów w podręczniku.
Tak jak już wcześniej pisałem, nie może być mój kod, tylko zmodyfikowany z podręcznika.
Nie jestem informatykiem, a przygodę z c++ rozpocząłem ze względu na chęć pomocy dzieciom, bo na podręczniki i szkołę nie ma co liczyć.

0
#include <iostream>
using namespace std;
int wiele(int kwota)
{
  int nominaly[9]={500, 200, 100, 50, 20, 10, 5, 2, 1};
  int ile=0;
  for(int i=0;i<9;i++)
  {
      if(kwota>=nominaly[i])
  {
      ile=kwota/nominaly[i];
      kwota=kwota-(nominaly[i]*ile);
      cout<<nominaly[i]<<" zł x "<<ile<<endl;
  }
  }
  return ile;
}
int main()
{
  int kwota;
  cout<<"Podaj prosze kwote reszty jaka chcesz wydac?"<<endl;
  cin>>kwota;
  cout<<wiele(kwota)<<endl;
  return 0;
}


0

Podaj prosze kwote reszty jaka chcesz wydac?
99
50 zł x 1
20 zł x 2
5 zł x 1
2 zł x 2
2

Jak zmodyfikować kod, aby nie pokazywało 2 na końcu?

1
Lukmaster80 napisał(a):

Jak zmodyfikować kod, aby nie pokazywało 2 na końcu?

Już ci pisałem, pkt 2.

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