Advertisement
Guest User

Untitled

a guest
Apr 25th, 2019
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.99 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.IO;
  7.  
  8. namespace ExampleApplication
  9. {
  10. // Базовый класс
  11. //
  12. // Данный класс выступает в роли базового для классов-наследников Question (вопрос) и Answer (ответ)
  13. class Test
  14. {
  15. // Поле класса, содержащее текст вопроса или ответа
  16. //
  17. // Примечание (1): Лучше закрывать такие поля от доступа из вне.
  18. // Примечание (2): Обычно принято использовать нижнее подчеркивание в конце названия поля, чтобы
  19. // во-первых, показать что это защишеное поле (protected field), во-вторых, для того, чтобы
  20. // не использовать ключевое слово this.
  21. protected string text_;
  22.  
  23. // Конструктор обьекта
  24. public Test(string text)
  25. {
  26. text_ = text;
  27. }
  28.  
  29.  
  30. // Метод, который будет выводить текст вопроса или ответа.
  31. //
  32. // Для того чтобы переопределить этот метод в классе-наследнике нужно использовать
  33. // ключевое слово virtual.
  34. public virtual void Print(int id)
  35. {
  36. // Тут может быть какой-то функционал, который бы использовался в случае, если
  37. // данный метод не переопределен в классе-наследнике.
  38. //
  39. // В данный момент тут ничего не нужно.
  40. }
  41. }
  42.  
  43. // Класс-наследник, который будет содержать функционал для работы с вопросом.
  44. //
  45. // Данный класс наследует функционал класса Test.
  46. class Question : Test
  47. {
  48. public Question(string text)
  49. {
  50. text_ = text;
  51. }
  52.  
  53. // Метод, который будет выводить текст вопроса.
  54. //
  55. // Данный метод был переопределен. Об этом говорит ключевое слово override.
  56. public override void Print(int id)
  57. {
  58. Console.WriteLine($"Вопрос {id}: {text_}");
  59. }
  60. }
  61.  
  62. // Класс-наследник, который будет содержать функционал для работы с ответ.
  63. //
  64. // Данный класс наследует функционал класса Test.
  65. class Answer : Test
  66. {
  67. public Question(string text)
  68. {
  69. text_ = text;
  70. }
  71.  
  72. // Метод, который будет выводить текст ответа.
  73. //
  74. // Данный метод был переопределен. Об этом говорит ключевое слово override.
  75. public override void Print(int id)
  76. {
  77. Console.WriteLine($" {id}: {text_}");
  78. }
  79. }
  80.  
  81. class Program
  82. {
  83. static void Main(string[] args)
  84. {
  85. Test[,] m = new Test[5, 10];
  86.  
  87. // В данном случае "@" нужен для того, чтобы не экранировать и
  88. // не использовать специальные символы (н-р, \t, \n, \r)
  89. string path = @"F:\";
  90.  
  91. using (StreamReader sr = new StreamReader(path, Encoding.Default))
  92. {
  93. int ridx = 0; // используется для хранения индекса строки
  94. int fidx = 0; // используется для хранения индекса столбца
  95. string text; // используется для хранения текста из файла
  96. // Обработка файла.
  97. while (((text = sr.ReadLine()) != null) & (fidx < 10))
  98. {
  99. // Обрабатываем блок вопроса-ответов
  100. if (ridx == 0) // вопрос
  101. {
  102. m[ridx, fidx] = new Question(text);
  103. ridx++;
  104. }
  105. else if (ridx < 5) // ответ
  106. {
  107. m[ridx, fidx] = new Answer(text);
  108. ridx++;
  109. }
  110. // В случае, если это был последний ответ, то обнуляем
  111. // ridx, делая следующую строку вопросом.
  112. if (ridx >= 5)
  113. {
  114. ridx = 0;
  115. fidx++;
  116. }
  117. }
  118. // Обычный вывод.
  119. for (int i = 0; i < 10; i++)
  120. for (int j = 0; j < 5; j++) {
  121. if (i == 0) // случае, если это вопрос, то выводим его номер (это номер слобеца + 1)
  122. m[j, i].Print(i+1);
  123. else // случае, если это ответ, то выводим его номер (это номер строки)
  124. m[j, i].Print(j);
  125. }
  126. }
  127.  
  128. Console.ReadKey();
  129. }
  130.  
  131. }
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement