Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace laba5
- {
- class Massiv
- { /// <summary>
- /// Поле с элементами массива
- /// </summary>
- private int[] _a;
- /// <summary>
- /// Поле с числами элементов массива
- /// </summary>
- private int _n;
- /// <summary>
- /// Метод ввода массива
- /// </summary>
- public void Input()
- {
- _a = new int[_n]; //выделили память для массива
- for (int i = 0; i < _n; i++)
- {
- Console.Write("Введите " + (i + 1) + " элемент массива: ");
- _a[i] = Control();
- }
- }
- /// <summary>
- /// Метод вывода массива на экран
- /// </summary>
- public void Print()
- {
- for (int i = 0; i < _n; i++)
- {
- Console.Write(_a[i] + "\t");
- }
- }
- /// <summary>
- /// Метод нахождения суммы элементов массива с нечётными номерами
- /// </summary>
- /// <returns></returns>
- public double Sum()
- {
- double sum = 0;
- for (int i = 0; i < _n; i++)
- {
- if (i % 2 == 0) sum += _a[i];
- }
- return sum;
- }
- /// <summary>
- /// Метод сворачивания
- /// </summary>
- public void Squeeze()
- {
- for (int i = 0; i < _n; i++)
- if (Math.Abs(_a[i]) < 1) //всем элементам, которые по модулю меньше 1 присвоили 0
- _a[i] = 0;
- for (int i = 0; i < _n - 1; i++)
- if (_a[i] == 0)
- {
- _a[i] = _a[i + 1];
- _a[i + 1] = 0;
- }
- }
- public int Control()
- {
- string str = Console.ReadLine();
- int x;
- while (!int.TryParse(str, out x))
- {
- Console.WriteLine("Повторите ввод");
- str = Console.ReadLine();
- }
- return x;
- }
- private bool TestFirstNegative()
- {
- int i = 0;
- while (i < _n && _a[i] >= 0)
- i++;
- if (i == _n)
- return false;
- else
- return true;
- }
- private bool TestLastNegative()
- {
- int i = _n-1;
- while (i >= 0 && _a[i] >= 0)
- i++;
- if (i == -1)
- return false;
- else
- return true;
- }
- private int SearchFirstNegative()
- {
- int i = 0;
- while (i < _n && _a[i] >= 0)
- i++;
- return i;
- }
- private int SearchLastNegative()
- {
- int i = _n-1;
- while (i >= 0 && _a[i] >= 0)
- i--;
- return i;
- }
- public void SumBetween()
- {
- int sum = 0;
- if (TestFirstNegative() && TestLastNegative())
- {
- for (int i = SearchFirstNegative() + 1; i < SearchLastNegative(); i++)
- sum += _a[i];
- Console.WriteLine("\nСумма элементов массива, расположенных между первым и последним \nотрицательным элементом равна:" + sum);
- }
- else
- Console.WriteLine("Ошибка, отсутствует либо первый, либо последний отрицательный элементы");
- }
- static void Main(string[] args)
- {
- Massiv Mass = new Massiv();
- try
- {
- Console.Write("Введите число элементов массива: ");
- Mass._n = Mass.Control();
- Mass.Input();
- Mass.Print();
- if (Mass._n != 0)
- {
- Console.WriteLine("\n\nСумма элементов массива с нечетными номерами равна: " + Mass.Sum());
- Mass.SumBetween();
- Console.WriteLine();
- Mass.Squeeze();
- Mass.Print();
- Console.WriteLine();
- }
- else Console.WriteLine("Число элементов массива должно быть больше 0, попробуйте еще раз.");
- }
- catch
- {
- Console.WriteLine("Ошибка!");
- }
- Console.WriteLine("Программа завершена. Нажмите любую клавишу...");
- Console.ReadKey();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement