Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <iostream>
- using namespace std;
- int main()
- {
- //Создаем файловый поток и связываем его с файлом
- ifstream in("filein.txt");
- if (in.is_open())
- {
- //Если открытие файла прошло успешно
- //Вначале посчитаем сколько чисел в файле
- int count = 0;// число чисел в файле
- int temp;//Временная переменная
- while (!in.eof())// пробегаем пока не встретим конец файла eof
- {
- in >> temp;//в пустоту считываем из файла числа
- count++;// увеличиваем счетчик числа чисел
- }
- //Число чисел посчитано, теперь нам нужно понять сколько
- //чисел в одной строке
- //Для этого посчитаем число пробелов до знака перевода на новую строку
- //Вначале переведем каретку в потоке в начало файла
- in.seekg(0, ios::beg);
- in.clear();
- //Число пробелов в первой строчке вначале равно 0
- int count_space = 0;
- char symbol;
- while (!in.eof())//на всякий случай цикл ограничиваем концом файла
- {
- //теперь нам нужно считывать не числа, а посимвольно считывать данные
- in.get(symbol);//считали текущий символ
- if (symbol == ' ') count_space++;//Если это пробел, то число пробелов увеличиваем
- if (symbol == '\n') break;//Если дошли до конца строки, то выходим из цикла
- }
- //Опять переходим в потоке в начало файла
- in.seekg(0, ios::beg);
- in.clear();
- //разделение
- //Теперь можем считать матрицу.
- int n = count / (count_space + 1);//число строк
- int m = count_space + 1;//число столбцов на единицу больше числа пробелов
- double** x;
- x = new double* [n];
- for (int i = 0; i < n; i++) x[i] = new double[m];
- //Считаем матрицу из файла
- for (int i = 0; i < n; i++)
- for (int j = 0; j < m; j++)
- in >> x[i][j];
- //Выведем матрицу
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- cout << x[i][j] << "\t";
- cout << "\n";
- }
- for (int i = 0; i < n; i++) delete[] x[i];
- delete[] x;
- in.close();//под конец закроем файла
- }
- else
- {
- //Если открытие файла прошло не успешно
- cout << "Файл не найден.";
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment