Advertisement
Guest User

Untitled

a guest
Jan 17th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.85 KB | None | 0 0
  1. namespace ConsoleApplication16
  2. {
  3.     class Program
  4.     {
  5.         static void Main(string[] args)
  6.         {
  7.             BinaryNumber bNum1;
  8.             BinaryNumber bNum2;
  9.             BinaryNumber bNum3;
  10.             BinaryNumber bNum4;
  11.  
  12.             //Обработка исключений
  13.             try
  14.             {
  15.                 bNum1 = new BinaryNumber("10011");
  16.                 bNum2 = new BinaryNumber("0011");
  17.                 bNum3 = new BinaryNumber("10101");
  18.                 bNum4 = new BinaryNumber("0011");
  19.             }
  20.             catch (FormatException ex)
  21.             {
  22.                 Console.WriteLine(ex.Message);
  23.                 Console.ReadLine();
  24.                 return;
  25.             }
  26.  
  27.             //Сложение
  28.             BinaryNumber bNumRes1 = bNum1 + bNum2;
  29.             Console.WriteLine(bNumRes1);
  30.  
  31.             //Вычитание
  32.             BinaryNumber bNumRes2 = bNum3 - bNum4;
  33.             Console.WriteLine(bNumRes2);
  34.  
  35.             //Умножение
  36.             BinaryNumber bNumRes3 = bNum1 * bNum2;
  37.             Console.WriteLine(bNumRes3);
  38.  
  39.             //Деление
  40.             BinaryNumber bNumRes4 = bNum3 / bNum4;
  41.             Console.WriteLine(bNumRes4);
  42.  
  43.             //Сравнение
  44.             Console.WriteLine(bNum2.Equals(bNum4));
  45.             Console.ReadLine();
  46.         }
  47.     }
  48.     public class BinaryNumber
  49.     {
  50.         //Внутренее значение числа
  51.         private int innerNumber;
  52.  
  53.         //Конструктор с проверкой формата параметра
  54.         public BinaryNumber(string bNumber)
  55.         {
  56.             bool res = bNumber.ToCharArray().Any(n => (n != '0' && n != '1'));
  57.             if (res)
  58.                 throw new FormatException("Неверный формат данных!");
  59.  
  60.             innerNumber = Convert.ToInt32(bNumber, 2);
  61.         }
  62.         //Перегрузка оператора +
  63.         public static BinaryNumber operator +(BinaryNumber bn1, BinaryNumber bn2)
  64.         {
  65.             int b1 = Convert.ToInt32(bn1.ToString(), 2);
  66.             int b2 = Convert.ToInt32(bn2.ToString(), 2);
  67.             return new BinaryNumber(Convert.ToString(b1 + b2, 2));
  68.         }
  69.         //Перегрузка оператора -
  70.         public static BinaryNumber operator -(BinaryNumber bn1, BinaryNumber bn2)
  71.         {
  72.             int b1 = Convert.ToInt32(bn1.ToString(), 2);
  73.             int b2 = Convert.ToInt32(bn2.ToString(), 2);
  74.             return new BinaryNumber(Convert.ToString(b1 - b2, 2));
  75.         }
  76.         //Перегрузка оператора *
  77.         public static BinaryNumber operator *(BinaryNumber bn1, BinaryNumber bn2)
  78.         {
  79.             int b1 = Convert.ToInt32(bn1.ToString(), 2);
  80.             int b2 = Convert.ToInt32(bn2.ToString(), 2);
  81.             return new BinaryNumber(Convert.ToString(b1 * b2, 2));
  82.         }
  83.         //Перегрузка оператора /
  84.         public static BinaryNumber operator /(BinaryNumber bn1, BinaryNumber bn2)
  85.         {
  86.             int b1 = Convert.ToInt32(bn1.ToString(), 2);
  87.             int b2 = Convert.ToInt32(bn2.ToString(), 2);
  88.             return new BinaryNumber(Convert.ToString(b1 / b2, 2));
  89.         }
  90.         //Перегрузка Equals
  91.         public override bool Equals(object obj)
  92.         {
  93.             if (obj is BinaryNumber)
  94.             {
  95.                 if (this.ToString() == ((BinaryNumber)obj).ToString())
  96.                     return true;
  97.             }
  98.             return false;
  99.         }
  100.         //Перегрузка GetHashCode
  101.         public override int GetHashCode()
  102.         {
  103.             return this.ToString().GetHashCode();
  104.         }
  105.         //Перегрузка ToString()
  106.         public override string ToString()
  107.         {
  108.             return Convert.ToString(innerNumber, 2);
  109.         }
  110.     }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement