Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- /*Составить класс «Деньги» для работы с денежными суммами. Число должно быть представлено двумя полями: типа long для рублей и типа unsigned char - для копеек. +
- * Дробная часть (копейки) при выводе на экран должна быть отделена от целой части запятой. +
- * Реализовать сложение, +
- * вычитание, +
- * деление сумм, +
- * деление суммы на дробное число, +
- * умножение на дробное число, +
- * операции сравнения. +
- * В функции main проверить эти методы. +
- */
- namespace ConsoleApp2
- {
- class Program
- {
- static void Main(string[] args)
- {
- Money a = new Money();
- a.rub = -15;
- a.cop = -10;
- Money b = new Money();
- b.rub = 15;
- b.cop = 99;
- double num = -100.44;
- Console.WriteLine("дробное число = " + num);
- Console.Write("Money a = ");
- a.print();
- Console.Write("Money b = ");
- b.print();
- Console.WriteLine("сумма. Money a + Money b");
- (a + b).print();
- Console.WriteLine("разность. Money a - Money b");
- (a - b).print();
- Console.WriteLine("деление сумм. Money a / Money b");
- (a / b).print();
- Console.WriteLine("деление суммы на дробное число. Money a / " + num);
- a.Division(num).print();
- Console.WriteLine("умножение суммы на число. Money a * " + num);
- a.Multiplication(num).print();
- Console.WriteLine("оператор сравнения Money a > Money b");
- Console.WriteLine(a > b);
- Console.WriteLine("оператор сравнения Money a < Money b");
- Console.WriteLine(a < b);
- Console.WriteLine("оператор сравнения Money a == Money b");
- Console.WriteLine(a == b);
- Console.WriteLine("оператор сравнения Money a != Money b");
- Console.WriteLine(a != b);
- }
- }
- class Money
- {
- public long rub { get; set; } // рубль
- public sbyte cop { get; set; } // копейка
- public static Money operator+ (Money m1, Money m2) // Сложение
- {
- return new Money
- {
- rub = m1.rub + m2.rub + (m1.cop + m2.cop) / 100,
- cop = Convert.ToSByte((m1.cop + m2.cop) % 100)
- };
- }
- public static Money operator- (Money m1, Money m2) // Вычитание
- {
- long cops = (m1.cop + m1.rub * 100) - (m2.cop + m2.rub * 100);
- return new Money { rub = cops / 100, cop = Convert.ToSByte(cops % 100) };
- }
- public static Money operator/ (Money m1, Money m2) // Деление сумм
- {
- double a = (Convert.ToDouble((m1.cop + m1.rub * 100)) / (m2.cop + m2.rub * 100));
- a = Math.Round(a, 2);
- return new Money
- {
- rub = Convert.ToInt64(Math.Truncate(a)),
- cop = Convert.ToSByte((a - Math.Truncate(a)) * 100)
- };
- }
- public Money Division(double divisor)
- {
- double b = Convert.ToDouble(cop + rub * 100) / (divisor * 100);
- return new Money
- {
- rub = Convert.ToInt64(Math.Truncate(b)),
- cop = Convert.ToSByte((b - Math.Truncate(b)) * 100)
- };
- }
- public Money Multiplication(double multiplier)
- {
- double b = Convert.ToDouble(cop + rub * 100) * multiplier / 100;
- return new Money
- {
- rub = Convert.ToInt64(Math.Truncate(b)),
- cop = Convert.ToSByte((b - Math.Truncate(b)) * 100)
- };
- }
- public static bool operator> (Money m1, Money m2)
- {
- double a = Convert.ToDouble(m1.cop + m1.rub * 100);
- double b = Convert.ToDouble(m2.cop + m2.rub * 100);
- if (a > b)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- public static bool operator< (Money m1, Money m2)
- {
- double a = Convert.ToDouble(m1.cop + m1.rub * 100);
- double b = Convert.ToDouble(m2.cop + m2.rub * 100);
- if (a < b)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- public static bool operator== (Money m1, Money m2)
- {
- double a = Convert.ToDouble(m1.cop + m1.rub * 100);
- double b = Convert.ToDouble(m2.cop + m2.rub * 100);
- if (a == b)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- public static bool operator!= (Money m1, Money m2)
- {
- double a = Convert.ToDouble(m1.cop + m1.rub * 100);
- double b = Convert.ToDouble(m2.cop + m2.rub * 100);
- if (a != b)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- public void print() // Вывод в консоль
- {
- if (rub <= 0 && cop < 0)
- {
- Console.WriteLine("-" + String.Format("{0},{1:D2}", -rub, -cop));
- }
- else
- {
- Console.WriteLine(String.Format("{0},{1:D2}", rub, cop));
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement