美好的一天:)我想制作一个程序(在Visual C ++中),它使用两个不同文件中的两个矩阵执行多个不同的操作。到目前为止我完成了这个。
typedef unsigned int uint;
class matrix {
private:
uint nrows, ncol;
float **elements;
public:
matrix(const char*);
void printmatrix(const char*);
};
#include "matrix.h"
#include <iostream>
#include <fstream>
#include <iomanip>
matrix::matrix(const char*file) {
ifstream fcin(file, ios::in);
if (!fcin) {
cerr << "\nError: the file doesnt exist\n";
exit(EXIT_FAILURE);
}
fcin >> nrows;
fcin >> ncol;
elements = new float*[nrows];
for (uint i = 0; i < nrows; i++) {
elements[i] = new float[ncol];
for (uint j = 0; j < ncol; j++)
fcin >> elements[i][j];
}
fcin.close();
}
void matrix::printmatrix(const char*file) {
ofstream fcout(file, ios::out);
if (!fcout) {
cerr << "\nError: file doesnt exist\n";
exit(EXIT_FAILURE);
}
fcout << nrows;
fcout << "\n";
fcout << ncol;
fcout << "\n";
for (uint i = 0; i < nrows; i++) {
for (uint j = 0; j < ncol; j++)
fcout << setw(6) << elements[i][j];
fcout << "\n";
}
fcout.close();
};
#include "matrix.h"
#include <cstdlib>
int main()
{
matrix A("matrix1.txt");
A.imprimir("matrix2.txt");
system("PAUSE");
return 0;
}
我开始使用随机生成的矩阵执行程序,并使用重载运算符执行运算(加法,减法,乘法);并且还操作“逆矩阵”和“乘以标量”。但是,当处理来自两个不同文本文件的矩阵时,我很复杂:\我有很多疑问,从两个不同文本文件的矩阵的运算符重载原型是什么?
当我为随机生成的矩阵求和时,我做到了这一点:
matrix* operator+ (const matrix&matrix2){
matrix*sum=new matriz(nrow, ncol);
for (uint i=0; i<nrows; i++){
for (uint j=0; j<ncol; j++){
sum->elements[i][j]=elements[i][j]+matrix2.elements[i][j];
}
}
return sum;
}
同样地,我已经完成了上面提到的操作并且运行良好。但是,我不知道如何使用从两个不同文本文件中获取的矩阵进行操作(带有开销)。你能帮我吗? :)对不起,如果我的问题根本不清楚,我来自拉丁美洲,我的英语不好