Czesc,
przygotowuje sie do matury i z przyzwoitosci i dla czystosci sumienia postanowilem w 5 minut napisac prosta funkcje, ktora ma za zadanie rozwiazac problem wydawania reszty.
Otoz wg mojego programu 0.1>=0.1 to false.
Oto kod
const int ile=11;
const double nom[ile]={200,100,50,20,10,5,2,1,0.5,0.2,0.1};
void wydaj_reszte(double co) {
int jak[ile];
for(int j=0;j<ile;j++) jak[j]=0;
int i=0;
while(co>0) {
if(co>=nom[i]) {
co=co-nom[i];
jak[i]++;
}
else {
i++;
}
}
for(int j=0;j<ile;j++) cout << nom[j] << ": " << jak[j] << endl;
}
Dla danej 2.3 program wykonuje sie w nieskonczonosc. Jesli umieszcze strumien wyjscia w strodku petli, to okazuje sie, ze zmienna 'co' ma wtedy caly czas wartosc rowna 0.1. Ma ktos pomysl w czym tkwi problem? (tak, wiem, ze sa jeszcze nominaly '0.05' etc., ale na takim przykladzie lepiej widac problem, ktory wystepuje takze przy porownaniu z '0.01')