static void Main(string[] args) { const int rows = 3; const int columns = 3; const int minValue = -9; const int maxValue = 9; TwoDimArray array = new TwoDimArray( rows, columns, minValue, maxValue); Console.WriteLine("Двумерный массив: "); PrintArray(array); Console.WriteLine(); Console.WriteLine("Сумма элементов массива : {0}", array.Sum()); int threshold = 2; Console.WriteLine("Сумма элементов больше {0}: {1}", threshold, array.Sum(threshold)); Console.WriteLine("Минимальный элемент массива: {0}", array.Min); Console.WriteLine("Максимальный элемент массива: {0}", array.Max); int row = 0, column = 0; array.GetMaxItemPos(ref row, ref column); Console.WriteLine("Максимальный элемент находится " + "(строка: {0}; колонка: {1})", row, column); Console.WriteLine("\n\nЗапись двумерного массива на диск " + "исчитвание этого массива"); string arrayPath = Directory.GetCurrentDirectory() + "/TwoDimArray.txt"; Console.WriteLine("Путь сохранения массива{0}", arrayPath); try { TwoDimArray.WriteArrayToFile(array, arrayPath); //TwoDimArray fileArray = TwoDimArray.ReadArrayFromFile(arrayPath); TwoDimArray fileArray = new TwoDimArray(arrayPath); File.Delete(arrayPath); Console.WriteLine("Считанный массив"); PrintArray(fileArray); } catch (TwoDimArrayException tdex) { Console.WriteLine(tdex.Message); if (null != tdex.InnerException) { Console.WriteLine(tdex.InnerException.Message); } } Console.ReadKey(); }
public static TwoDimArray ReadArrayFromFile(string path) { try { using (StreamReader sw = new StreamReader(path)) { int numRows = int.Parse(sw.ReadLine()); int numColumns = int.Parse(sw.ReadLine()); TwoDimArray array = new TwoDimArray(numRows, numColumns); for (int i = 0; i < numRows; ++i) { for (int j = 0; j < numColumns; ++j) { array[i, j] = int.Parse(sw.ReadLine()); } } return(array); } } catch (Exception ex) { throw new TwoDimArrayException( "Ошибка считывания массива из файла", ex); } }
private static void PrintArray(TwoDimArray array) { for (int i = 0; i < array.Rows; ++i) { for (int j = 0; j < array.Columns; ++j) { Console.Write("{0}\t", array[i, j]); } Console.WriteLine(); } }
/// <summary> /// Проверка работы с массивом целых чисел /// </summary> /// <param name="ar">обрабатываемый массив</param> private static void TestAllFunctionality(TwoDimArray ar) { if (ar != null) { // Проверка, чем же был заполнен массив Console.WriteLine($"Текущее состояние массива\n{ar}"); #region Сумма всех элементов массива Console.WriteLine($"Сумма элементов массива : {ar.SumAllArray}"); #endregion #region Сумма элементов больше заданного Console.Write("Введите число для подсчета суммы элементов массива больше него : "); int minValue = int.Parse(Console.ReadLine()); Console.WriteLine($"Сумма элементов массива больше {minValue} : {ar.SumArrayMoreThan(minValue)}"); #endregion #region Максимальный элемент массива Console.WriteLine($"Максимальный элемент массива : {ar.Maximum}"); #endregion #region Минимальный элемент массива Console.WriteLine($"Минимальный элемент массива : {ar.Minimum}"); #endregion #region Индекс максимального элемента массива через out ar.GetIndexOfMaximumOut(out int row, out int col); Console.WriteLine($"Индекс максимального элемента массива через out (переменные не инициализировались) : [{row}],[{col}]"); #endregion #region Индекс максимального элемента массива через ref int refRow = -1; int refCol = -1; Console.WriteLine($"Индекс максимального элемента массива через ref; refRow = {refRow}; refCol = {refCol}"); ar.GetIndexOfMaximumRef(ref refRow, ref refCol); Console.WriteLine($"Индекс максимального элемента массива через ref : [{refRow}],[{refCol}]"); #endregion #region Запись массива в файл Console.WriteLine("Введите путь к файлу, куда будет выполняться запись результата : "); string FileNameToWrite = Console.ReadLine(); if (ar.WriteArrayToFile(FileNameToWrite)) { Console.WriteLine($"Записано в {FileNameToWrite}"); } #endregion } else { Console.WriteLine("Передан пустой массив, проверять нечего"); } }
/// <summary> /// Алексей Кулик [email protected] /// Урок 4, задача 5 /// а)* Реализовать библиотеку с классом для работы с двумерным массивом. /// Реализовать конструктор, заполняющий массив случайными числами. /// Создать методы, которые возвращают сумму всех элементов массива, /// сумму всех элементов массива больше заданного, /// свойство, возвращающее минимальный элемент массива, /// свойство, возвращающее максимальный элемент массива, /// метод, возвращающий номер максимального элемента массива (через параметры, используя модификатор ref или out). /// б)** Добавить конструктор и методы, которые загружают данные из файла и записывают данные в файл /// в)** Обработать возможные исключительные ситуации при работе с файлами. /// </summary> static void Main() { Console.WriteLine("Проверка работы с двумерными массивами"); TwoDimArray ar; #region Инициализация двумерного массива случайными числами Console.WriteLine("Инициализация двумерного массива случайными числами"); ar = new TwoDimArray(2, 5); TestAllFunctionality(ar); #endregion #region Чтение массива из файла Console.WriteLine("Чтение массива из файла"); ar = new TwoDimArray("..\\..\\IntArray.txt"); TestAllFunctionality(ar); #endregion Console.WriteLine("Работа закончена. Нажмите любую клавишу"); Console.ReadKey(); }
public static void WriteArrayToFile(TwoDimArray array, string path) { try { using (StreamWriter sw = new StreamWriter(path)) { sw.WriteLine(array.Rows); sw.WriteLine(array.Columns); for (int i = 0; i < array.Rows; ++i) { for (int j = 0; j < array.Columns; ++j) { sw.WriteLine(array[i, j]); } } } } catch (Exception ex) { throw new TwoDimArrayException( "Ошибка зсписи массива в файл", ex); } }