Advertisement
Guest User

Untitled

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