#include "Drone.h" #include #include // #define DEBUG float Drone::calculateChange(float total, float paid) { return paid - total; } void Drone::returnChange(float change) { float restChange = change; std::cout << "Restbetrag: " << restChange << std::endl; std::sort(availableCashInstances, availableCashInstances + CashInstanceSize, std::greater<>()); for (int i = 0; i < CashInstanceSize; i++) { if (availableCashInstances[i].value >= restChange) { } while (restChange >= availableCashInstances[i].value && availableCashInstances[i].availableAmount > 0) { std::cout << availableCashInstances[i].value << " " << std::flush; #ifdef DEBUG std::cout << "restChange: " << restChange << " Current Coin: " << availableCashInstances[i].value << std::flush << std::endl; #endif availableCashInstances[i].availableAmount--; restChange = std::round((restChange - availableCashInstances[i].value) * 100) / 100; } } std::cout << std::endl; if (restChange > 0.009) { for (int i = CashInstanceSize - 1; i >= 0; i--) { if (availableCashInstances[i].value >= restChange && availableCashInstances[i].availableAmount > 0) { availableCashInstances[i].availableAmount--; restChange = std::round((restChange - availableCashInstances[i].value) * 100) / 100; std::cout << "Warnung: Rückgeld kann nicht genau herausgegeben werden! " "Ausbezahlter Betrag überschreitet den genauen Wert um " << restChange * (-1) << std::endl; return; } } std::cout << "Nicht genügend Restgeld vorhanden! Fehlender Betrag: " << restChange << std::endl; } }