/////////////////////// Проверка указанного пути //////////////////////////////// std::string inputPathToFile() { std::string path; bool isIncorrect; std::cout << "Укажите путь к файлу: "; do { isIncorrect = false; std::cin >> path; std::ifstream file(path); if (path.substr(path.find_last_of(".") + 1) != "txt") { isIncorrect = true; std::cout << "Введён некорректный формат пути! Введите путь расширением .txt заново!" << std::endl; } file.open(path); if (!file.is_open()) { std::cout << "По указанному пути файл не найден! Укажите правильный путь: "; isIncorrect = true; } } while (isIncorrect); return path; } /////////////////////////////////////////////////////////////////////////////// ///////////////////////////// Ввод из файла /////////////////////////////////// int* fillSequenceFromFile(const int size, const std::string path) { int* sequence = new int[size]; bool isIncorrect; std::string matrixInp; std::ifstream fin(path); std::cout << "Чтение последовательности... \n"; fin >> matrixInp; for (int i = 0; i < size; i++) { do { isIncorrect = false; try { fin >> sequence[i]; } catch (std::string errorMessage) { std::cout << "Ошибка при чтении последовательности! Введите последовательность с консоли! \n"; isIncorrect = true; sequence = fillSequenceFromConsole(size); } if (!isIncorrect && (sequence[i] < MIN_VALUE || sequence[i] > MAX_VALUE)) { std::cout << "Ошибка при чтении последовательности! Введите последовательность с консоли! \n"; isIncorrect = true; sequence = fillSequenceFromConsole(size); } } while (isIncorrect); } fin.close(); return sequence; } ////////////////////////////////////////////////////////////////////////////// ////////////////////////////// Запись в файл ////////////////////////////////// void outputSequenceInFile(std::string path, int* sequence, const int size) { bool isIncorrect; std::ofstream fout; std::cout << "Вывод начальной последовательности в файл... \n"; fout.open(path, std::ios::app); fout << "\n"; do { isIncorrect = false; try { for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) fout << sequence[i] << "\t"; fout << "\n"; } fout << "\n"; } catch (std::string errorMessage) { std::cout << "Ошибка! Измените параметры файла или укажите новый путь! \n"; isIncorrect = true; path = inputPathToFile(); } } while (isIncorrect); fout.close(); std::cout << "Данные успешно записаны в файл! \n"; } //////////////////////////////////////////////////////////////////////////////