注释函数#include<iostream> #include<fstream> #include<iomanip> using namespace std; class MatrixCalculator { private: double M[3][3]; double N[10][10]; public: bool ReadMatrix() { int i, j; ifstream Nfile("d:\N矩阵.txt"); if (!Nfile) return false; ifstream Mfile("d:\M矩阵.txt"); if (!Mfile) { Nfile.close(); return false; } for (i = 0;i < 10;i++) for (j = 0;j < 10;j++) Nfile >> N[i][j]; for (i = 0;i < 3;i++) for (j = 0;j < 3;j++) Mfile >> M[i][j]; Mfile.close(); Nfile.close(); return true; } double algorithms1(int I, int J) { double Mij, Nij; double a, b; int i, j, in, jn; a = 0; b = 0; for (i = 0;i <= 2;i++) for (j = 0;j <= 2;j++) { Mij = M[i][j]; in = I - i - 1; jn = J - j - 1; if (in < 0 || jn < 0 || in>9 || jn>9) Nij = 0; else Nij = N[in][jn]; a = a + Mij * Nij; b = b + Mij; } if (b != 0) return a / b; else return 0; } double algorithms2(int I, int J) { double Mij, Nij; double a, b; int i, j, in, jn; a = 0; b = 0; for (i = 0;i <= 2;i++) for (j = 0;j <= 2;j++) { Mij = M[i][j]; in = I - i - 1; jn = J - j - 1; if (in < 0 || jn < 0 || in>9 || jn>9) Nij = 0; else Nij = N[9 - in][9 - jn]; a = a + Mij * Nij; b = b + Mij; } if (b != 0) return a / b; else return 0; } }; int main() { MatrixCalculator mc; int i, j; double v1, v2; char c; if (!mc.ReadMatrix()) { cout << "打开文件出错,程序退出" << endl; return -1; } cout << "读入矩阵数据成功,请输入I:"; cin >> i; cout << endl << "请输入J:"; cin >> j; cout << "输入的I=" << i << "输入的J= " << j << endl; v1 = mc.algorithms1(i, j); cout << "算法1的结果=" << v1 << endl; v2 = mc.algorithms2(i, j); cout << "算法2的结果=" << v2 << endl; return 0; }
时间: 2024-04-28 19:19:43 浏览: 81
#include_iostream.h_
4星 · 用户满意度95%
这是一个C++程序,实现了一个矩阵计算器类MatrixCalculator,其中包含两个算法algorithms1和algorithms2,可以根据输入的矩阵数据以及用户输入的I和J值,计算出相应的结果。程序首先读入矩阵数据,然后获取用户输入的I和J值,接着调用算法1和算法2进行计算,并输出结果。算法1是根据输入的I和J值,以及3x3的矩阵M和10x10的矩阵N,计算出一个加权平均值,其中权重由矩阵M的元素决定,矩阵N的元素作为值参与计算。算法2与算法1类似,差别在于它使用了矩阵N中与算法1相反方向的元素进行计算。
阅读全文