static void SummaryInfo(ref Storage[] storages) { foreach (Storage storage in storages) { Console.WriteLine(storage.GetInfo()); } }
static double SummarySpace(ref Storage[] storages) { double summSpace = 0; foreach (Storage s in storages) { summSpace += s.GetSpace(); } return summSpace; }
static double CopyTime(ref Storage[] storages, double size) { double copyTime = 0; if (SummarySpace(ref storages) < size) throw new Exception("Нехватает места для копирования на носителях"); for (int i = 0; i < storages.Length; ++i) { while (storages[i].GetFreeSpace() >= 0.780 && size > 0) { copyTime += storages[i].Copy(0.780); size -= 0.78; } } return Math.Ceiling(copyTime); }
static void Main(string[] args) { Storage[] array = new Storage[15]; for (int i = 0; i < array.Length; ++i)//инициализация массива из 10 флешек на 8 гб и 10 односторонних двд { if (i <= 10) array[i] = new Flash(3, 64); else array[i] = new Dvd(1); } try { SummaryInfo(ref array);//Вывод инфы о носителях до копирования Console.WriteLine("\nОбщее место на выбранных носителях: {0} гб", SummarySpace(ref array));//рассчет общего места на носителях Console.WriteLine("\nОбщее время копирования: {0} минут", (int)(CopyTime(ref array, 565)/60));//рассчет времени копирования SummaryInfo(ref array);//после копирования } catch (Exception ex) { Console.WriteLine(ex.Message); NumberOfStorages(565); } }
static double SummaryFreeSpace(ref Storage[] storages) { double freeSpace = 0; foreach (Storage storage in storages) freeSpace += storage.GetFreeSpace(); return freeSpace; }