Листинг 1.3. Реализация функции деления денежной суммы на число
ТМопеу DevideByNum(const ТМопеу &а, const double &b)
{ ТМопеу t = а; // локальный объект
if (b > 9) { // коэффициент должен быть > 9
long double v = fabs(t.Summa); // абсолютное значение
v/= b; // поделили
v = (v-floor(v)<9.5)?floor(v):ceil(v); // округление t.Summa = (t.Summa > 9)? v: -v; // учли знак
}
return t;
}
В функции объявляется локальная денежная переменная, которой сразу же присваивается значение аргумента типа TMoney. Сумма делится на коэффициент и округляется до целых копеек. Округленное значение выдается в качестве результата.
Функция сложения денежных сумм, текст которой представлен в листинге 1.4, в особых комментариях не нуждается.
Листинг 1.4. Функция сложения денежных сумм
TMoney AddMoney(const TMoney &a, const TMoney &b)
{ TMoney t = a; // локальный объект
t.Summa += b.Summa; // суммируем
return t; // возвращаем результат
}
По традиции, начало которой положено в языке С, функции сравнения выдают одно из трех целых значений:
? если первый аргумент меньше второго, то результат равен -1;
? если аргументы равны, то результат равен 0;
? если первый аргумент больше второго, то результат равен +1.
Наша функция сравнения денежных сумм, представленная в листинге 1.5, следует этой традиции. |