# AVGBetweenZero Наша программа была создана с целью подсчёта значения чисел, которые находятся между **первым** и **последним** нулём. ## Начало работы Для тестирования и разработки нашего приложения необходимо: 1. Знать язык **C#**; 2. Иметь на компьютере установленное приложения **Visual Studio** компании **Microsoft**; 3. Иметь поддержку приложений на **C#** в **Visual Studio**. Доступ к проекту вы можете получить, клонировав удалённый репозитрий в ваш Visual Studio. [Репозиторий](http://gogs.ngknn.ru:3000/AsterDk/WhiteBox) ### Необходимые условия Для установки приложения вам понадобиться **Visual Studio 2022**. ### Установка Зайти на сайт **Microsoft** на страницу со скачиванием **Visual studio 2022** и нажать на кнопку ***Скачать***. ![Страница Microsoft](image.png) Далее открыть установочный файл и начать установку. ![Процесс установки](http://gogs.ngknn.ru:3000/AsterDk/WhiteBox/raw/master/image-1.png) После чего дождаться установки в основном окне приложения. ![Завершающий этап](http://gogs.ngknn.ru:3000/AsterDk/WhiteBox/raw/master/image-2.png) После установки запустить проект, нажав на кнопку ***Клонирование репозитория*** и добавив туда ссылку на репозитрорий. ![Добавить из репозитория](http://gogs.ngknn.ru:3000/AsterDk/WhiteBox/raw/master/image-3.png) ![Ввод ссылки](http://gogs.ngknn.ru:3000/AsterDk/WhiteBox/raw/master/image-4.png) В самом проекте находится **класс**, в котором происходят основные вычисления. В **методе Main** основного файла происходит вызов класса и передача переменных. + Класс MassClass.cs ``` class MassClass { private List classArray; private int classArraySize; public MassClass(List array, int n) { this.classArraySize = n; this.classArray = array; this.classArray = InputMass(classArraySize); PrintMass(classArraySize, classArray); Console.WriteLine("Среднее значение - " + AverageValue (classArraySize, classArray)); } //Метод ввода массива static List InputMass(int n) { double listUnit; List array = new List(); Console.WriteLine("Заполните массив: "); for (int i = 0; i < n; i++) { Console.WriteLine("Введите [{0}] элемент: ", i); listUnit = Convert.ToDouble(Console.ReadLine()); array.Add(listUnit); } return array; } //Метод вывода массива static void PrintMass(int n, List array) { Console.WriteLine("Итоговый массив: "); for (int i = 0; i < n; ++i) { Console.Write(array[i] + " "); } Console.WriteLine(""); } //Метод расчёта срденего значения среди чисел, находящихся между нулями static double AverageValue(int n, List array) { try { int count = 0; double sum = 0; int firstIdZero = array.FindIndex(x => x == 0), lastIdzZero = array.FindLastIndex(x => x == 0); double avg = 0; if (firstIdZero == lastIdzZero) { Console.WriteLine("В массиве присутсвует только одно нулевое значение или такое значение отсутсвует вовсе, с подобными условиями задача не решаема!"); return 1; } for (int i = firstIdZero + 1; i < lastIdzZero; i++) { sum += array[i]; count++; } avg = sum / count; return avg; } catch (Exception message) { Debug.WriteLine(message.Message); return 1; } } } ``` + Метод Main ``` static void Main(string[] args) { //Конструкция исключений try { List array = new List(); Console.WriteLine("Введите размерность массива"); int arraySize = Convert.ToInt32(Console.ReadLine()); //Проверка введённой размерности массива if (arraySize > 0) { new MassClass(array, arraySize); } else { Console.WriteLine("Вы ввели некорректное значение!"); } } catch (Exception message) { Console.WriteLine(message.Message); } } ``` После запуска программы вам предложат выполнить определённые действия. По их завершению вы получите определённый результат. ![Начало работы](http://gogs.ngknn.ru:3000/AsterDk/WhiteBox/raw/master/image-5.png) ## Авторы * **Дмитрий Кудряшов** - *Рефакторинг кода* - [AsterDK](http://gogs.ngknn.ru:3000/AsterDk)