klasscho

Untitled

Nov 25th, 2019
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.88 KB | None | 0 0
  1. #include <fstream>
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. //Создаем файловый поток и связываем его с файлом
  8. ifstream in("filein.txt");
  9.  
  10. if (in.is_open())
  11. {
  12. //Если открытие файла прошло успешно
  13.  
  14. //Вначале посчитаем сколько чисел в файле
  15. int count = 0;// число чисел в файле
  16. int temp;//Временная переменная
  17.  
  18. while (!in.eof())// пробегаем пока не встретим конец файла eof
  19. {
  20. in >> temp;//в пустоту считываем из файла числа
  21. count++;// увеличиваем счетчик числа чисел
  22. }
  23.  
  24. //Число чисел посчитано, теперь нам нужно понять сколько
  25. //чисел в одной строке
  26. //Для этого посчитаем число пробелов до знака перевода на новую строку
  27.  
  28. //Вначале переведем каретку в потоке в начало файла
  29. in.seekg(0, ios::beg);
  30. in.clear();
  31.  
  32. //Число пробелов в первой строчке вначале равно 0
  33. int count_space = 0;
  34. char symbol;
  35. while (!in.eof())//на всякий случай цикл ограничиваем концом файла
  36. {
  37. //теперь нам нужно считывать не числа, а посимвольно считывать данные
  38. in.get(symbol);//считали текущий символ
  39. if (symbol == ' ') count_space++;//Если это пробел, то число пробелов увеличиваем
  40. if (symbol == '\n') break;//Если дошли до конца строки, то выходим из цикла
  41. }
  42.  
  43.  
  44. //Опять переходим в потоке в начало файла
  45. in.seekg(0, ios::beg);
  46. in.clear();
  47.  
  48. //разделение
  49.  
  50.  
  51. //Теперь можем считать матрицу.
  52.  
  53. int n = count / (count_space + 1);//число строк
  54. int m = count_space + 1;//число столбцов на единицу больше числа пробелов
  55. double** x;
  56. x = new double* [n];
  57. for (int i = 0; i < n; i++) x[i] = new double[m];
  58.  
  59. //Считаем матрицу из файла
  60. for (int i = 0; i < n; i++)
  61. for (int j = 0; j < m; j++)
  62. in >> x[i][j];
  63.  
  64.  
  65.  
  66. //Выведем матрицу
  67. for (int i = 0; i < n; i++)
  68. {
  69. for (int j = 0; j < m; j++)
  70. cout << x[i][j] << "\t";
  71. cout << "\n";
  72. }
  73.  
  74. for (int i = 0; i < n; i++) delete[] x[i];
  75. delete[] x;
  76.  
  77. in.close();//под конец закроем файла
  78. }
  79. else
  80. {
  81. //Если открытие файла прошло не успешно
  82. cout << "Файл не найден.";
  83. }
  84.  
  85. system("pause");
  86. return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment