robertos18 Temat założony przez niniejszego użytkownika |
Wydawanie reszty metoda zachłanna » 2018-03-30 18:16:34 Witam Zastosowałem metodę zachłanną, tylko jak powiedzmy dam resztę 400000 to wyswietla mi: 50000 x 8 50000 x 7 50000 x 6 50000 x 5 50000 x 4 50000 x 3 50000 x 2 50000 x 1 zamiast tylko 50000 x 8. Jak to poprawić? #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; 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 }; break; case 2: tab1 = new int[ WIELKOSC_TAB ] { 100000, 20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 25, 10, 5, 1 }; 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; ++x; } delete[] tab1; } return 0; }
|
|
maly7 |
» 2018-03-30 18:37:05 Taka drobnostka :p Musisz odejmować nominał * ilość: r -= n; |
|
robertos18 Temat założony przez niniejszego użytkownika |
» 2018-03-30 18:53:53 Jak mnoze razy 15, to dla 400000 działa, ale dla powiedzmy 4343234 juz nie :/ |
|
maly7 |
» 2018-03-30 19:25:40 Nie masz mnożyć razy 15 tylko razy ilość jaką obliczyłeś w pętli (p). Czyli tak: r -= n * p; A i dodatkowo ta pętla for nie jest Ci do niczego potrzebna. |
|
robertos18 Temat założony przez niniejszego użytkownika |
» 2018-03-30 19:53:08 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? |
|
« 1 » |