Как реализовать интерфейс IComparable и перегрузить операции отношения? - C# (194411)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Помогите, пожалуйста, с заданием:

Выполнить задание 9, используя для хранения экземпляров разработанных классов стандартные параметризованные коллекции. Во всех классах реализовать интерфейс IComparable и перегрузить операции отношения для реализации значимой семантики сравнения объектов по какому-либо полю.

Вот код к 9-ому заданию. Он правильный и в нем все выполнено.
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace ConsoleApplication2
  6. {
  7. internal class Str
  8. {
  9. private int bytesize;
  10. private string str;
  11. // конструктор без параметров
  12. public Str()
  13. {
  14. }
  15. // конструктор, принимающий в качестве параметра строковый литерал
  16. public Str(string str)
  17. {
  18. this.str = str;
  19. bytesize = (int)str.Length;
  20. }
  21. // конструктор, принимающий в качестве параметра символ;
  22. public Str(char ch)
  23. {
  24. str = Convert.ToString(ch);
  25. bytesize = 1;
  26. }
  27.  
  28. // Метод получения длины строки
  29. public void SizeDef()
  30. {
  31. bytesize = str.Length * sizeof(char);
  32. }
  33. // Метод очищающий стоку.
  34. public void Clear()
  35. {
  36. str = "";
  37. bytesize = 0;
  38. }
  39. }
  40. internal class DecString : Str
  41. {
  42. // Конструктор для десятичной строки.
  43. public DecString(string str)
  44. {
  45. int x;
  46. int.TryParse(str, out x);
  47. var sb = new StringBuilder();
  48. bool minus = false;
  49. if (x < 0)
  50. {
  51. sb.Append("-", 0, 0);
  52. }
  53. x = Math.Abs(x);
  54. if (x == 0)
  55. {
  56. sb.Insert(0, "0");
  57. }
  58. else
  59. {
  60. while (x > 0)
  61. {
  62. int temp = x % 10;
  63. sb.Insert(0, temp.ToString());
  64. x /= 10;
  65. }
  66. if (minus == true)
  67. {
  68. sb.Insert(0, "-");
  69. }
  70. }
  71. bs = sb.ToString();
  72. }
  73. public string bs { get; set; }
  74. public static DecString operator -(DecString l, DecString r)
  75. {
  76. int result = Int32.Parse(l.bs) - Int32.Parse(r.bs);
  77. return new DecString(string.Format("" + result));
  78. }
  79.  
  80. public static bool operator <(DecString l, DecString r)
  81. {
  82. int li = Int32.Parse(l.bs);
  83. int ri = Int32.Parse(r.bs);
  84. return li < ri;
  85. }
  86.  
  87. public static bool operator >(DecString l, DecString r)
  88. {
  89. int li = Int32.Parse(l.bs);
  90. int ri = Int32.Parse(r.bs);
  91. return li > ri;
  92. }
  93. public static bool operator ==(DecString l, DecString r)
  94. {
  95. int li = Int32.Parse(l.bs);
  96. int ri = Int32.Parse(r.bs);
  97. return li == ri;
  98. }
  99. public static bool operator != (DecString l, DecString r)
  100. {
  101. int li = Int32.Parse(l.bs);
  102. int ri = Int32.Parse(r.bs);
  103. return li != ri;
  104. }
  105.  
  106. }
  107. public class Program
  108. {
  109. static void Main(string[] args)
  110. {
  111. Str[] decStrsArray = new DecString[3];
  112. DecString d1 = new DecString("50");
  113. decStrsArray[0] = d1;
  114. DecString d2 = new DecString("10");
  115. decStrsArray[1] = d2;
  116. DecString d3 = new DecString("10");
  117. decStrsArray[2] = d3;
  118. Console.WriteLine(d2 != d1);
  119. Console.ReadLine();
  120. }
  121. }
  122. }
А вот задание к 9-ому: Описать базовый класс Строка. Обязательные поля класса: • поле для хранения символов строки; • значение типа ushort для хранения длины строки в байтах. Реализовать обязательные методы следующего назначения: • конструктор без параметров; • конструктор, принимающий в качестве параметра строковый литерал; • конструктор, принимающий в качестве параметра символ; • метод получения длины строки; • метод очистки строки (сделать строку пустой). Описать производный от Строка класс Десятичная_строка. Строки данного класса могут содержать только символы десятичных цифр и символы – и +, задающие знак числа. Символы – или + могут находиться только в первой позиции числа, причем символ + может отсутствовать, в этом случае число считается положительным. Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, класс Десятичная_строка принимает нулевое значение. Содержимое данных строк рассматривается как десятичное число. Для класса определить следующие методы: • конструктор, принимающий в качестве параметра число; • арифметическая разность строк; • проверка на больше (по значению); • проверка на меньше (по значению).
Помогите хоть чем нибудь) Дайте комментарии, чтобы составить программу.

Решение задачи: «Как реализовать интерфейс IComparable и перегрузить операции отношения?»

textual
Листинг программы
  1.         internal class Str : IComparable<Str>
  2.         {
  3.  
  4.             private int bytesize;
  5.             private string str;
  6.  
  7.             public string S
  8.             {
  9.                 get { return str; }
  10.                 set { str = value; }
  11.             }
  12.  
  13.             // конструктор без параметров
  14.             public Str()
  15.             {
  16.             }
  17.  
  18.             // конструктор, принимающий в качестве параметра строковый литерал
  19.             public Str(string str)
  20.             {
  21.                 this.str = str;
  22.                 bytesize = (int)str.Length;
  23.             }
  24.  
  25.             // конструктор, принимающий в качестве параметра символ;
  26.             public Str(char ch)
  27.             {
  28.                 str = Convert.ToString(ch);
  29.                 bytesize = 1;
  30.             }
  31.  
  32.  
  33.  
  34.             // Метод получения длины строки
  35.             public void SizeDef()
  36.             {
  37.                 bytesize = str.Length * sizeof(char);
  38.             }
  39.  
  40.             // Метод очищающий стоку.
  41.             public void Clear()
  42.             {
  43.                 str = "";
  44.                 bytesize = 0;
  45.             }
  46.  
  47.             public int CompareTo(Str other)
  48.             {
  49.                 return str.CompareTo(other.S);
  50.             }
  51.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы