Witam
Dostałem takie zadanie:
Napisz program, który najpierw czyta nominały (zadecyduj, czy przeliczać nominały na
najmniejsza jednostkę), a następnie w pętli czyta kwoty/reszty do tworzenia z najmniejszej
liczby nominałów metodą zachłanną. Wykonaj program dla wielu kwot/reszt.
(a) Jako danych użyj nominałów naszej waluty.
(b) Jako danych użyj monet i banknotów amerykańskiej waluty; w centach: 1 (penny), 5
(nickel), 10 (dime), 25 (quarter), 50 i w dolarach: 1, 2, 5, 10, 20, 50, 100, 200, 1000.
Moje pytanie brzmi. Czy dobrze zrobiłem to zadanie?
#include <iostream>
#include <stdlib.h>
using namespace std;
const short WIELKOSC_TAB = 15;
int * tab1;
int wybor;
int main()
{
while( true )
{
int r, p, x = 0;
cout << "Wybierz nominal: " << endl;
cout << "1. polski zloty (przeliczony w groszach)" << endl;
cout << "2. amerykanski dolar (przeliczony w centach)" << endl;
cin >> wybor;
if( wybor == 1 || wybor == 2 )
{
switch( wybor )
{
case 1:
tab1 = new int[ WIELKOSC_TAB ] { 50000, 20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5, 2, 1 }; // zloty w groszach
break;
case 2:
tab1 = new int[ WIELKOSC_TAB ] { 100000, 20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 25, 10, 5, 1 }; // dolar w centach
break;
}
}
else
{
cout << "Wybrales zla liczbe" << endl;
system( "PAUSE" );
return 0;
}
cout << "Podaj reszte do wyplacenia: ";
cin >> r;
while( r > 0 )
{
int n = 0;
for( int i = 0; i < 15; ++i )
{
if(( tab1[ i ] <= r ) &&( tab1[ i ] > n ) )
{
p = r / tab1[ i ];
n = tab1[ i ];
cout << tab1[ i ] << " x " << p << endl;
}
}
r -= n * p;
++x;
}
delete[] tab1;
}
return 0;
}