Перегруженные операции - C#
Формулировка задачи:
Во есть код:
Здесь складываются, вычитаются, додаётся рубль , отнимается рубль от вводимых пользователем денег .
Но работает всё как-то не всегда правильно . Проблемы возникли с перегрузкой операций + и - . Если , например , вводим 5 руб. и 70 коп . + 4.руб и 40 коп. , то сумма будет -10 . 00 руб. , а не 10.10 . И с операцией "-" проблема , если значение копеек 1-го объекта меньше значения копеек 2-го объекта , то считаются они просто со знаком "-".
Помогите пожалуйста , как можно решить эти проблемы? Вроде всё нормально написано(
Заранее огромное спасибо!
using System; class Money { int rub; //рубли int kop; //копейки public void Set() //функция ввода данных { Console.Write("\n Введите значение рублей: "); rub = Convert.ToInt32(Console.ReadLine()); Console.Write("\n Введите значение копеек:"); kop = Convert.ToInt32(Console.ReadLine()); kop = kop % 100; } public void Show() { Console.WriteLine(" На счету " + rub + " рублей " + kop + " копеек"); } public static Money operator +(Money op1, Money op2)//перегрузка оператоа + { Money ob = new Money(); ob.rub = op1.rub + op2.rub; if ((op1.kop + op2.kop) >= 100) ob.rub++; ob.kop = (op1.kop + op2.kop) % 100; return ob; } public static Money operator -(Money op1, Money op2)//перегрузка опреатора - { Money ob = new Money(); ob.rub = op1.rub - op2.rub; ob.kop = op1.kop - op2.kop; if (ob.kop < 0) ob.rub--; op2.kop = Math.Abs(ob.kop); if (ob.rub < 0) { ob.rub = 0; ob.kop = 0; } return ob; } public static Money operator ++(Money m1)//перегрузка оператоа ++ { m1.rub++; return m1; } public static Money operator --(Money m1)//перегрузка оператора -- { if (m1.rub == 0) { m1.rub = 0; m1.kop = 0; } else { m1.rub--; } return m1; } } class Program { static void Main() { Money m1 = new Money();//1-ый экземпляр класса Money Money m2 = new Money();//2-ой экземпляр класса Money Money m3 = new Money();//3-ий экземпляр класса Money Console.WriteLine("\n Введите значения 1-го объкта"); m1.Set(); Console.WriteLine("\n Введите значения 2-го объекта"); m2.Set(); Console.WriteLine("\n Вывод 1-го объекта:"); m1.Show(); Console.WriteLine("\n Вывод 2-го объекта"); m2.Show(); Console.WriteLine(" "); m3 = m1 - m2; Console.WriteLine("\n Разница 1-го и 2-го объекта"); m3.Show(); m3 = m1 + m2; Console.WriteLine("\n Сумма 1-го и 2-го объета"); m3.Show(); m1++; Console.WriteLine("\n Добавления рубля к 1-ому обекту"); m1.Show(); } }
Решение задачи: «Перегруженные операции»
textual
Листинг программы
Money ob = new Money(); ob.rub = op1.rub + op2.rub; ob.kop = op1.kop + op2.kop; if ((ob.kop) >= 100) { ob.rub++; ob.kop -= 100; } return ob;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д