|
|
back to boardТест №5 С# Posted by Toriki 23 Oct 2017 17:42 Сразу объясняю можно намного проще, но я решил попрактиковаться в ООП. Сам код. Не могу понять где ошибка (Завален 5-й тест): using System; namespace NullCopy { class Program { static void Main(string[] args) { string inputData = Console.ReadLine(); int countOfComputers = int.Parse(inputData.Split(' ')[0]); int countOfCables = int.Parse(inputData.Split(' ')[1]); Computer[] computerRoom = SetComputerRoom(countOfComputers); int time = 0; while (!IsAllInstalled(computerRoom)) { int index = IndexOfFirst(computerRoom); int conValue = ConnectionsValue(computerRoom, countOfCables); for (int i = index; i < index + conValue; i++) { if (i < computerRoom.Length) { computerRoom[i].Installing(); } } time++; } Console.WriteLine(time); Console.ReadKey(); } // Возвращает порядковый номер первого найденного элемента массива, с неустановленной игрой. static int IndexOfFirst (Computer[] computerRoom) { int index = 0; bool isFind = true; while ((isFind) && (index < computerRoom.Length)) { if (!computerRoom[index].IsInstalled()) { isFind = false; } else index++; } return index; } // Метод, возвращающий true если игра установленна на все компьютеры // или false если есть компьютеры без игры. static bool IsAllInstalled (Computer[] computerRoom) { bool isAllInstalled = true; for (int i = 0; i < computerRoom.Length; i++) { if (!computerRoom[i].IsInstalled()) { isAllInstalled = false; } } return isAllInstalled; }
// Метод, возвращающий кол-во компьютеров, способных передавать игру на другие компьютеры, // с учётом количества доступных кабелей. static int ConnectionsValue(Computer[] computerRoom, int maxValue) { int value = 0; for (int i = 0; i < computerRoom.Length; i++) { // Если на компьютере установленна игра, то он, потенциально, // способен передать её другому компьюетру. if (computerRoom[i].IsInstalled()) { value++; } } // Если количество потенциальных компьютеров больше количества доступных кабелей, // то мы возвращаем каличество кабелей. if (value > maxValue) { return maxValue; } // Иначе возвращаем количество компьютеров, готовых к передаче игры на другие. else return value;
} // Создаём компьютерный класс(помещение с компьютерами). static Computer[] SetComputerRoom(int countOf) { Computer[] computerRoom = new Computer[countOf]; // Пропускаем первый элемент (его мы объявим позднее) for (int i = 1; i < computerRoom.Length; i++) { computerRoom[i] = new Computer(); } // Создаём первый элемент с заранее установленной игрой. computerRoom[0] = new Computer(true); return computerRoom; } } public class Computer { // свойство, определяющее установленна ли игра на компьютере. private bool isInstalled; // Конструктор с неустановленной игрой по-умолчанию. public Computer (bool isInstalled = false) { this.isInstalled = isInstalled; } // Устанавливаем игру. public void Installing () { isInstalled = true; } // Установленна ли на компьютере игра? public bool IsInstalled() { return isInstalled; } } } Необязательно указывать на саму ошибку. Если кто объяснит в чём заключается 5-й тест, то уже будет большая помощь. Edited by author 23.10.2017 17:48 Re: Тест №5 С# Posted by Toriki 23 Oct 2017 19:52 Нашёл ошибку: при слишком большом кол-ве компов, память переполняется или программа работает медленно. в остальном логика программы работает. Как пример ООП пойдёт. |
|
|