Dziwne cyfry w pętli
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

Dziwne cyfry w pętli

AutorWiadomość
Temat założony przez niniejszego użytkownika
Dziwne cyfry w pętli
» 2019-03-11 21:16:41
Witam, mianowicie stworzylem program z problemem wydawania reszty, lecz pod koniec petli pojawiaja sie dziwne cyfry, gdy wpisuje pieniadze z groszami
C/C++
#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
    double banknoty[ 15 ] = { 500.0, 200.0, 100.0, 50.0, 20.0, 10.0, 5.0, 2.0, 1.0, 0.5, 0.2, 0.1, 0.05, 0.02, 0.01 };
    double kwota;
    int ilosc, i;
   
    cout << "Podaj reszte do wyplacenia: ";
    cin >> kwota;
   
    i = 0;
    while( kwota > 0 )
    {
        if( kwota >= banknoty[ i ] )
        {
            ilosc = kwota / banknoty[ i ];
            kwota = kwota -( banknoty[ i ] * ilosc );
            cout <<( double ) banknoty[ i ] << " x " <<( double ) ilosc << endl;
        }
        i++;
    }
    return 0;
}
P-174167
» 2019-03-11 21:57:16
Przekraczasz zakres tablicy. Musisz kończyć pętlę gdy kwota jest mniejsza od jednego grosza, a nie mniejsza równa zero.
P-174168
Temat założony przez niniejszego użytkownika
» 2019-03-11 22:57:42
A więc zrobiłem tak, teraz przy podaniu 244.44 np. gubi jednego grosza tzn. po zsumowaniu pokazuje 244.43, nie 244.44
C/C++
#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
    double banknoty[ 15 ] = { 500.0, 200.0, 100.0, 50.0, 20.0, 10.0, 5.0, 2.0, 1.0, 0.5, 0.2, 0.1, 0.05, 0.02, 0.01 };
    double kwota;
    int ilosc, i;
   
    cout << "Podaj reszte do wyplacenia: ";
    cin >> kwota;
   
    i = 0;
    while( kwota > 0.001 )
    {
        if( kwota >= banknoty[ i ] )
        {
            ilosc = kwota / banknoty[ i ];
            kwota = kwota -( banknoty[ i ] * ilosc );
            cout <<( double ) banknoty[ i ] << " zl * " <<( double ) ilosc << endl;
            if( kwota <= 0.01 )
                 break;
           
        }
        i++;
    }
    return 0;
}
P-174169
» 2019-03-11 23:02:34
P-174170
» 2019-03-11 23:21:23
2 rozwiązania:
  • przelicz kwoty na grosze i operuj na liczbach całkowitych, lub
  • dodaj do kwoty pół grosza na start.
P-174171
» 2019-03-25 17:35:33
Chyba zamiast if( kwota <= 0.01 ) to if( kwota < 0.01 ) bo gdy jest równe 0.01 to jest true i wykonuje instrukcje break dlatego zostaje jeden grosz
P-174249
« 1 »
 Strona 1 z 1