Hello. I start programming in C ++, I have a program that reads matrices from a txt file.
#include <fstream> #include <iostream> using namespace std; int main() { setlocale(LC_ALL, "RUSSIAN"); //Создаем файловый поток и связываем его с файлом ifstream in("C:\\Users\\1\\Desktop\\matriza.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;//Если дошли до конца строки, то выходим из цикла } cout << count_space; //Опять переходим в поток в начало файла 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; } The task is as follows: read two matrices from two text files, multiply them and output the result to the third file. Also consider all exceptions. How matrices are multiplied in C ++ - I figured it out. But I need the names of the three files to be specified as command line arguments. Read from the files you need two matrices, and not using duplications of the above code. How can I avoid duplicating code if I need to read two matrices and how to organize the names of the three files to be command line arguments? Thank!