Перегруженные операции - 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;