Advertisement
anticlown

Файлы в C++

Oct 19th, 2023
877
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.61 KB | None | 0 0
  1. /////////////////////// Проверка указанного пути ////////////////////////////////
  2. std::string inputPathToFile() {
  3.     std::string path;
  4.     bool isIncorrect;
  5.  
  6.     std::cout << "Укажите путь к файлу: ";
  7.  
  8.     do
  9.     {
  10.         isIncorrect = false;
  11.         std::cin >> path;
  12.         std::ifstream file(path);
  13.         if (path.substr(path.find_last_of(".") + 1) != "txt")
  14.         {
  15.             isIncorrect = true;
  16.             std::cout << "Введён некорректный формат пути! Введите путь расширением .txt заново!" << std::endl;
  17.         }
  18.         file.open(path);
  19.         if (!file.is_open())
  20.         {
  21.             std::cout << "По указанному пути файл не найден! Укажите правильный путь: ";
  22.             isIncorrect = true;
  23.         }
  24.     } while (isIncorrect);
  25.  
  26.     return path;
  27. }
  28. ///////////////////////////////////////////////////////////////////////////////
  29.  
  30.  
  31. ///////////////////////////// Ввод из файла ///////////////////////////////////
  32. int* fillSequenceFromFile(const int size, const std::string path) {
  33.     int* sequence = new int[size];
  34.     bool isIncorrect;
  35.     std::string matrixInp;
  36.     std::ifstream fin(path);
  37.  
  38.     std::cout << "Чтение последовательности... \n";
  39.     fin >> matrixInp;
  40.  
  41.     for (int i = 0; i < size; i++)
  42.     {
  43.         do
  44.         {
  45.             isIncorrect = false;
  46.  
  47.             try
  48.             {
  49.                 fin >> sequence[i];
  50.             }
  51.             catch (std::string errorMessage)
  52.             {
  53.                 std::cout << "Ошибка при чтении последовательности! Введите последовательность с консоли! \n";
  54.                 isIncorrect = true;
  55.                 sequence = fillSequenceFromConsole(size);
  56.             }
  57.  
  58.             if (!isIncorrect && (sequence[i] < MIN_VALUE || sequence[i] > MAX_VALUE))
  59.             {
  60.                 std::cout << "Ошибка при чтении последовательности! Введите последовательность с консоли! \n";
  61.                 isIncorrect = true;
  62.                 sequence = fillSequenceFromConsole(size);
  63.             }
  64.         } while (isIncorrect);
  65.     }
  66.  
  67.     fin.close();
  68.  
  69.     return sequence;
  70. }
  71. //////////////////////////////////////////////////////////////////////////////
  72.  
  73.  
  74. ////////////////////////////// Запись в файл //////////////////////////////////
  75. void outputSequenceInFile(std::string path, int* sequence, const int size) {
  76.     bool isIncorrect;
  77.     std::ofstream fout;
  78.  
  79.     std::cout << "Вывод начальной последовательности в файл... \n";
  80.  
  81.     fout.open(path, std::ios::app);
  82.     fout << "\n";
  83.  
  84.     do
  85.     {
  86.         isIncorrect = false;
  87.  
  88.         try
  89.         {
  90.             for (int i = 0; i < size; i++)
  91.             {
  92.                 for (int j = 0; j < size; j++)
  93.                     fout << sequence[i] << "\t";
  94.                 fout << "\n";
  95.             }
  96.  
  97.             fout << "\n";
  98.         }
  99.         catch (std::string errorMessage)
  100.         {
  101.             std::cout << "Ошибка! Измените параметры файла или укажите новый путь! \n";
  102.             isIncorrect = true;
  103.             path = inputPathToFile();
  104.         }
  105.     } while (isIncorrect);
  106.  
  107.     fout.close();
  108.     std::cout << "Данные успешно записаны в файл! \n";
  109. }
  110. //////////////////////////////////////////////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement