我的c++;项目赢得';t从命令行读取多个文件 我有一个C++程序,用来读取表示矩阵的两个文件。它将只读取其中一个文件。两个文件都只包含一个浮动矩阵。该程序旨在读取两个矩阵并将它们相乘,然后将结果打印到命令行。这是程序的代码 #include <fstream> #include <iostream> using std::cin; using std::cout; using std::cerr; using std::endl; using std::ofstream; #include <math.h> #include <stdlib.h> void readArr(int, int, double **); void multArrs(int, double **, int, double **, int, double **); void printResult(int, double **, int); int main(int argc, char *argv[]) { //read in the number of rows and columns int ar = atoi(argv[1]); int ac = atoi(argv[2]); int br = atoi(argv[3]); int bc = atoi(argv[4]); if (ac != br) { cerr<< "Matrix dimensions mismatch; exiting.\n"; exit(-1); } // reserve space for the three arrays double **A = new double*[ar]; // each el. of this points to a row of A for (int i = 0; i < ar; i++) A[i] = new double[ac]; // a row of 'ac' floats double **B = new double*[br]; for (int i = 0; i < br; i++) B[i] = new double[bc]; // a row of 'bc' floats double **C = new double*[ar]; for (int i = 0; i < ar; i++) C[i] = new double[bc]; // each el. of this points to a row of C readArr(ar, ac, A); readArr(br, bc, B); multArrs(ar, A, bc, B, ac, C); printResult(ar, C, bc); } //read in the matrix from the command line void readArr(int r, int c, double **arr) { for (int i = 0; i < r; ++i) { for (int j = 0; j < c; ++j) { std::cin>> arr[i][j]; cout << " \n" << arr[i][j]; } } } void multArrs(int ar, double **A, int bc, double **B, int br, double **C) { for(int i=0; i<ar; ++i) for(int j=0; j<bc; ++j) for(int k=0; k<br; ++k) { C[i][j]+=A[i][k]*B[k][j]; } } void printResult(int r1, double **C, int c1) { cout << endl << "Output Matrix: " << endl; for(int i=0; i<r1; ++i) for(int j=0; j<c1; ++j) { cout << " " << C[i][j]; if(j==c1-1) cout << endl; } }
感谢您提供的任何见解。我试着寻找答案,但找不到。此外,还必须使用我的c++;项目赢得';t从命令行读取多个文件 我有一个C++程序,用来读取表示矩阵的两个文件。它将只读取其中一个文件。两个文件都只包含一个浮动矩阵。该程序旨在读取两个矩阵并将它们相乘,然后将结果打印到命令行。这是程序的代码 #include <fstream> #include <iostream> using std::cin; using std::cout; using std::cerr; using std::endl; using std::ofstream; #include <math.h> #include <stdlib.h> void readArr(int, int, double **); void multArrs(int, double **, int, double **, int, double **); void printResult(int, double **, int); int main(int argc, char *argv[]) { //read in the number of rows and columns int ar = atoi(argv[1]); int ac = atoi(argv[2]); int br = atoi(argv[3]); int bc = atoi(argv[4]); if (ac != br) { cerr<< "Matrix dimensions mismatch; exiting.\n"; exit(-1); } // reserve space for the three arrays double **A = new double*[ar]; // each el. of this points to a row of A for (int i = 0; i < ar; i++) A[i] = new double[ac]; // a row of 'ac' floats double **B = new double*[br]; for (int i = 0; i < br; i++) B[i] = new double[bc]; // a row of 'bc' floats double **C = new double*[ar]; for (int i = 0; i < ar; i++) C[i] = new double[bc]; // each el. of this points to a row of C readArr(ar, ac, A); readArr(br, bc, B); multArrs(ar, A, bc, B, ac, C); printResult(ar, C, bc); } //read in the matrix from the command line void readArr(int r, int c, double **arr) { for (int i = 0; i < r; ++i) { for (int j = 0; j < c; ++j) { std::cin>> arr[i][j]; cout << " \n" << arr[i][j]; } } } void multArrs(int ar, double **A, int bc, double **B, int br, double **C) { for(int i=0; i<ar; ++i) for(int j=0; j<bc; ++j) for(int k=0; k<br; ++k) { C[i][j]+=A[i][k]*B[k][j]; } } void printResult(int r1, double **C, int c1) { cout << endl << "Output Matrix: " << endl; for(int i=0; i<r1; ++i) for(int j=0; j<c1; ++j) { cout << " " << C[i][j]; if(j==c1-1) cout << endl; } },c++,matrix,command-line,command-line-arguments,matrix-multiplication,C++,Matrix,Command Line,Command Line Arguments,Matrix Multiplication,感谢您提供的任何见解。我试着寻找答案,但找不到。此外,还必须使用
readArr()
正在从cin
@NathanOliver-cin读取文件,但它只读取一个文件file@SeanRyan这是不正确的方式。将文件名作为参数传递,并使用ifstream
读取文件。
#include <fstream>
#include <iostream>
using std::cin;
using std::cout;
using std::cerr;
using std::endl;
using std::ofstream;
#include <math.h>
#include <stdlib.h>
void readArr(int, int, double **);
void multArrs(int, double **, int, double **, int, double **);
void printResult(int, double **, int);
int main(int argc, char *argv[])
{
//read in the number of rows and columns
int ar = atoi(argv[1]);
int ac = atoi(argv[2]);
int br = atoi(argv[3]);
int bc = atoi(argv[4]);
if (ac != br)
{
cerr<< "Matrix dimensions mismatch; exiting.\n";
exit(-1);
}
// reserve space for the three arrays
double **A = new double*[ar]; // each el. of this points to a row of A
for (int i = 0; i < ar; i++)
A[i] = new double[ac]; // a row of 'ac' floats
double **B = new double*[br];
for (int i = 0; i < br; i++)
B[i] = new double[bc]; // a row of 'bc' floats
double **C = new double*[ar];
for (int i = 0; i < ar; i++)
C[i] = new double[bc]; // each el. of this points to a row of C
readArr(ar, ac, A);
readArr(br, bc, B);
multArrs(ar, A, bc, B, ac, C);
printResult(ar, C, bc);
}
//read in the matrix from the command line
void readArr(int r, int c, double **arr)
{
for (int i = 0; i < r; ++i) {
for (int j = 0; j < c; ++j) {
std::cin>> arr[i][j];
cout << " \n" << arr[i][j];
}
}
}
void multArrs(int ar, double **A, int bc, double **B, int br, double **C)
{
for(int i=0; i<ar; ++i)
for(int j=0; j<bc; ++j)
for(int k=0; k<br; ++k)
{
C[i][j]+=A[i][k]*B[k][j];
}
}
void printResult(int r1, double **C, int c1)
{
cout << endl << "Output Matrix: " << endl;
for(int i=0; i<r1; ++i)
for(int j=0; j<c1; ++j)
{
cout << " " << C[i][j];
if(j==c1-1)
cout << endl;
}
}