/// <summary> /// Вывод в консоль содержимого файла с данными последовательностей /// </summary> /// <returns></returns> public async Task PrintMatrixSequenceDataFile() { Console.WriteLine("Содержимое файла с данными последовательностей"); double[] data = await _fileBinarySeqData.ReadAsync(); for (int i = 0; i < data.Length; i++) { Console.WriteLine($"{i}:\t{data[i]}"); } }
/// <summary> /// Возвращает строку матрицы в виде массива /// на основе данных об отдельных ненулевых элементах /// </summary> /// <param name="row">Номер строки (начиная с 0)</param> /// <returns>массив double[]</returns> public async Task <double[]> GetRowFromSeparatedNnzElementsAsync(int row) { if (row < 0) { throw new Exception($"Выход за пределы массива! Попытка запроса строки с индексом {row}. Индекс строки не может быть меньше нуля!"); } int numCols = await GetNumColsAsync(); double[] rowData = new double[numCols]; // Определяем наличие неповторяющихся ненулевых элементов int numElementsInFile = (int)_fileBinaryRowIndex.GetNumElementsInFile; int maxRowIndex = numElementsInFile - 2; if (maxRowIndex < row) { return(rowData); } // Считываем неповторяющиеся ненулевые значения int indexStart = await _fileBinaryRowIndex.ReadAsync(row); int indexStop = await _fileBinaryRowIndex.ReadAsync(row + 1); for (int i = indexStart; i < indexStop; i++) { int indexCol = await _fileBinaryColIndex.ReadAsync(i); double cellValue = await _fileBinaryData.ReadAsync(i); rowData[indexCol] = cellValue; } return(rowData); }
/// <summary> /// Возвращает массив коэффициентов решения СЛАУ /// </summary> /// <returns></returns> public async Task <double[]> GetResultAsync() { double[] result = await _fileBinaryResult.ReadAsync(); return(result); }
/// <summary> /// Возвращает массив правых частей СЛАУ /// </summary> /// <returns></returns> private async Task <double[]> GetRightSideAsync() { double[] rSide = await _fileBinaryRightSide.ReadAsync(); return(rSide); }