Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.50 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.  
  7. namespace laba5
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. Massiv Mass = new Massiv();
  14. try
  15. {
  16. Console.Write("Введите число элементов массива: ");
  17. Mass.N = Mass.Control();
  18. Mass.Input();
  19. Mass.Print();
  20. if (Mass.N != 0)
  21. {
  22. Console.WriteLine("\n\nСумма элементов массива с нечетными номерами равна: " + Mass.Sum());
  23. Mass.SumBetween();
  24. Console.WriteLine();
  25. Mass.Squeeze();
  26. Mass.Print();
  27. Console.WriteLine();
  28. }
  29. else Console.WriteLine("Число элементов массива должно быть больше 0, попробуйте еще раз.");
  30. }
  31. catch
  32. {
  33. Console.WriteLine("Ошибка!");
  34. }
  35. Console.WriteLine("Программа завершена. Нажмите любую клавишу...");
  36. Console.ReadKey();
  37. }
  38. }
  39. class Massiv
  40. { /// <summary>
  41. /// Поле с элементами массива
  42. /// </summary>
  43. private double[] _a;
  44. /// <summary>
  45. /// Поле с числами элементов массива
  46. /// </summary>
  47. private int _n;
  48. /// <summary>
  49. /// Свойство с полем размера массива
  50. /// </summary>
  51. public int N
  52. {
  53. get { return _n; }
  54. set { _n = value; }
  55. }
  56. /// <summary>
  57. /// Метод ввода массива
  58. /// </summary>
  59. public void Input()
  60. {
  61. _a = new double [_n]; //выделили память для массива
  62. for (int i = 0; i < _n; i++)
  63. {
  64. Console.Write("Введите " + (i + 1) + " элемент массива: ");
  65. _a[i] = Control();
  66. }
  67. }
  68. /// <summary>
  69. /// Метод вывода массива на экран
  70. /// </summary>
  71. public void Print()
  72. {
  73. for (int i = 0; i < _n; i++)
  74. {
  75. Console.Write(_a[i] + "\t");
  76. }
  77. }
  78. /// <summary>
  79. /// Метод нахождения суммы элементов массива с нечётными номерами
  80. /// </summary>
  81. /// <returns></returns>
  82. public double Sum()
  83. {
  84. double sum = 0;
  85. for (int i = 0; i < _n; i++)
  86. {
  87. if (i % 2 == 0) sum += _a[i];
  88. }
  89. return sum;
  90. }
  91. /// <summary>
  92. /// Метод сворачивания
  93. /// </summary>
  94. public void Squeeze()
  95. {
  96. for (int i = 0; i < _n; i++)
  97. if (Math.Abs(_a[i]) < 1) //всем элементам, которые по модулю меньше 1 присвоили 0
  98. _a[i] = 0;
  99. for (int i = 0; i < _n - 1; i++)
  100. if (_a[i] == 0)
  101. {
  102. _a[i] = _a[i + 1];
  103. _a[i + 1] = 0;
  104. }
  105. }
  106. public double Control()
  107. {
  108. string str = Console.ReadLine();
  109. double x;
  110. while (!double.TryParse(str, out x))
  111. {
  112. Console.WriteLine("Повторите ввод");
  113. str = Console.ReadLine();
  114. }
  115. return x;
  116. }
  117. private bool TestFirstNegative()
  118. {
  119. int i = 0;
  120. while (i < _n && _a[i] >= 0)
  121. i++;
  122. if (i == _n)
  123. return false;
  124. else
  125. return true;
  126. }
  127. private bool TestLastNegative()
  128. {
  129. int i = _n-1;
  130. while (i >= 0 && _a[i] >= 0)
  131. i--;
  132. if (i == -1) //если вышел за границу, то отриц элемента нет
  133. return false;
  134. else
  135. return true;
  136. }
  137. private int SearchFirstNegative()
  138. {
  139. int i = 0;
  140. while (i < _n && _a[i] >= 0)
  141. i++;
  142. return i;
  143. }
  144. private double SearchLastNegative()
  145. {
  146. int i = _n-1;
  147. while (i >= 0 && _a[i] >= 0)
  148. i--;
  149. return i;
  150. }
  151.  
  152. public void SumBetween()
  153. {
  154. double sum = 0;
  155. if (TestFirstNegative() && TestLastNegative())
  156. {
  157. for (int i = SearchFirstNegative() + 1; i < SearchLastNegative(); i++)
  158. sum += _a[i];
  159. Console.WriteLine("\nСумма элементов массива, расположенных между первым и последним \nотрицательным элементом равна:" + sum);
  160. }
  161. else
  162. Console.WriteLine("Ошибка, отсутствует либо первый, либо последний отрицательный элементы");
  163. }
  164. }
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement