Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- using namespace std;
- // Реализация класса Money
- class Money {
- int rubbles; // рубли
- int penny; // копейки
- public:
- void setMoney();
- void normalize();
- void getMoney();
- void subtraction(Money t);
- void sum_dividing(Money t); // деление сумм
- void dividing_by_const();
- void multiplication();
- void comparison(Money t);
- Money operator + (Money t) { // реализация сложения
- Money func_result;
- if ((penny + t.penny) >= 100 ) {
- int delta_rub = (penny + t.penny) / 100, delta_kop = (penny + t.penny) % 100;
- func_result.rubbles = (rubbles + t.rubbles);
- func_result.rubbles += delta_rub;
- func_result.penny = delta_kop;
- } else {
- func_result.rubbles = rubbles + t.rubbles;
- func_result.penny = penny + t.penny;
- }
- return func_result;
- }
- };
- void Money :: sum_dividing(Money t) {
- double summ_one = (double)rubbles + ((double)penny / 100.0);
- double summ_two = (double)t.rubbles + ((double)t.penny / 100.0);
- double result = summ_one / summ_two;
- rubbles = (int)result;
- penny = (int)(result * 100) % 100;
- cout << rubbles << ',' << penny;
- }
- void Money :: subtraction(Money t) {
- double summ_one = (double)rubbles + ((double)penny / 100.0);
- double summ_two = (double)t.rubbles + ((double)t.penny / 100.0);
- double result = summ_one - summ_two;
- rubbles = (int)result;
- penny = (int)(result * 100) % 100;
- cout << rubbles << ',' << penny << endl;
- }
- void Money :: multiplication() {
- double d_const;
- cout << "Введите вещественную константу для вычислений: "; cin >> d_const;
- double summ = (double)rubbles + ((double)penny / 100.0);
- summ *= d_const;
- rubbles = (int)summ;
- penny = (int)(summ * 100) % 100;
- }
- void Money :: normalize() {
- if (rubbles < 0 || penny < 0) {
- cout << "Invalid input!" << endl;
- } else {
- if (penny >= 100) {
- int delta_rub = penny / 100, delta_kop = penny % 100;
- rubbles = rubbles + delta_rub;
- penny = delta_kop;
- }
- }
- }
- void Money :: setMoney() {
- cout << "Введите сумму: " << endl << "Рубли: "; cin >> rubbles;
- cout << "Копейки: "; cin >> penny;
- }
- void Money :: getMoney() {
- cout << "Результат: " << rubbles << ',' << penny << endl;
- }
- void Money :: comparison(Money t) {
- if (rubbles < t.rubbles) {
- cout << "Первая денежная сумма меньше второй" << endl;
- } else if (rubbles > t.rubbles) {
- cout << "Вторая денежная сумма меньше первой" << endl;
- } else if (penny < t.penny) {
- cout << "Первая денежная сумма меньше второй" << endl;
- } else if (penny > t.penny) {
- cout << "Вторая денежная сумма больше первой" << endl;
- } else {
- cout << "Денежные суммы равны" << endl;
- }
- }
- void Money :: dividing_by_const () {
- double d_const;
- cout << "Введите вещественную константу для вычислений: "; cin >> d_const;
- if (d_const == 0) {
- cout << "Invalid CONST!" << endl;
- } else {
- double summ = (double)rubbles + ((double)penny / 100.0);
- summ /= d_const;
- rubbles = (int)summ;
- penny = (int)(summ * 100) % 100;
- }
- }
- int main() {
- setlocale(LC_ALL, "Russian");
- Money value_one, value_two; // две переменные типа класса (две денюшки)
- value_one.setMoney(); value_two.setMoney();// инициализация
- value_one.normalize(); value_two.normalize(); //приведение к нормальному виду
- cout << "Введенные суммы: \nПервая: "; value_one.getMoney(); cout << "\nВторая: "; value_two.getMoney();
- cout << endl;
- char operation;
- cout << "Введите то, что хотите сделать с числами: \nСложение: + \nВычитание: - \nУмножение на double константу: # \nДеление сумм между собой: / \nСравнение: = \nДеление на double константу: % \n";
- cout << "Введите операцию: "; cin >> operation;
- Money final_value;
- bool choice = false;
- switch (operation) {
- case '+':
- final_value = value_one + value_two;
- final_value.normalize();
- final_value.getMoney();
- break;
- case '=':
- value_one.comparison(value_two);
- break;
- case '%':
- cout << "Выберите, какую сумму делить на вещественную константу (0 или 1): ";
- cin >> choice;
- if (!choice) {
- value_one.dividing_by_const();
- value_one.normalize();
- value_one.getMoney();
- break;
- } else {
- value_two.dividing_by_const();
- value_two.normalize();
- value_two.getMoney();
- break;
- }
- case '-':
- value_one.subtraction(value_two);
- break;
- case '#':
- cout << "Выберите, какую сумму делить на вещественную константу (0 или 1): ";
- cin >> choice;
- if (!choice) {
- value_one.multiplication();
- value_one.normalize();
- value_one.getMoney();
- break;
- } else {
- value_two.multiplication();
- value_two.normalize();
- value_two.getMoney();
- break;
- }
- case '/':
- value_one.sum_dividing(value_two);
- break;
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment