Привет всем У меня есть необычная проблема. Я написал класс moneychanger, который определяет количество векселей и монет, которые указаны как изменения, исходя из общей суммы покупки и суммы денег, предоставленной для покупки. Например, если вы собираетесь купить что-то за 12,04 доллара США и дали счет за 20 долларов США, вы получите 7,96 доллара за изменение.Использование указателей в классе
выход будет:
0 twenty dollar bill(s)
0 ten dollar bill(s)
1 5 dollar bill(s)
2 1 dollar bills(s)
3 quarter(s)
2 dime(s)
1 penny(s)
теперь дело в том, что я должен вернуть номера каждого счета и монеты с использованием указателей или ссылок.
моя программа имеет две функции: GetBills, которая использует указатели для целых чисел, чтобы вернуть количество счетов в размере 20, 10, 5 и 1 доллара, которые необходимы для изменения.
другой - это GetCoins, который снова использует указатели для целых чисел, чтобы вернуть количество кварталов, никелей и пенни, которые необходимы для изменения.
Моя проблема в этом. мои GetBills не сохраняют никаких значений в указателях, но мои GetCoins. если я вхожу 12,04 за ценой покупки и 20.00 данной суммы мой выход:
0 twenty dollar bill(s)
0 ten dollar bill(s)
0 5 dollar bill(s)
0 1 dollar bills(s)
3 quarter(s)
2 dime(s)
1 penny(s)
так, как вы можете увидеть некоторые значения для монет хорошо, но не для счетов. Что может привести к тому, что мои указатели в моей GetBills не сохранят правильные значения?
вот мой укороченный код:
MoneyChanger.h
class MoneyChanger
{
private:
double amountP, amountG, totalChange;
int twenty, ten, five, one, change;
int quarter, dime, nickel, penny;
public:
void GetBills(int *twenties, int *tens, int *fives, int *ones);
void GetCoins(int *quarters, int *dimes, int *nickels, int *pennies);
};
MoneyChanger.cpp
void MoneyChanger::setData(double pp, double given)
{
amountP = pp;
amountG = given;
CalcChange();
}
void MoneyChanger::CalcChange()
{
while(totalChange >= 20){totalChange = totalChange-20; twenty++;}
while(totalChange >= 10){totalChange = totalChange-10; ten++;}
while(totalChange >= 5){totalChange = totalChange-5; five++;}
while(totalChange >= 1){totalChange = totalChange-1; one++;}
while(totalChange >= .25){totalChange = totalChange-.25; quarter++;}
while(totalChange >= .10){totalChange = totalChange-.10; dime++;}
while(totalChange >= .05){totalChange = totalChange-.05; nickel++;}
while(totalChange >= .01){totalChange = totalChange-.01; penny++;}
}
double MoneyChanger::GetTotalChange()
{
totalChange = amountG - amountP;
return totalChange;
}
void MoneyChanger::GetBills(int *twenties, int *tens, int *fives, int *ones)
{
*twenties = twenty;
*tens = ten;
*fives = five;
*ones = one;
CalcChange();
}
void MoneyChanger::GetCoins(int *quarters, int *dimes, int *nickels, int *pennies)
{
*quarters = quarter;
*dimes = dime;
*nickels = nickel;
*pennies = penny;
CalcChange();
}
main.cpp
да, извините, не положил его здесь , не хотел, чтобы это было слишком долго »MoneyChanger :: MoneyChanger() { \t amountP = 0.0; \t количествоG = 0.0; \t totalChange = 0.0; \t Двадцать = 0; \t десять = 0; \t 5 = 0; \t one = 0; \t quarter = 0; \t dime = 0; \t nickel = 0; \t penny = 0; } ' –