input.txt
1 2 //要算的矩陣d 的某元素的行列數
3 4 2 3 //矩陣a,b,c分別為3行4列,4行2列,2行3列
1 1 3 //矩陣a的第一行,第一列元素為3
1 4 5 //同理
2 2 1 //同理
3 1 2 //同理
1 2 2 //矩陣b的第一行,第二列元素為2
2 1 1
3 1 2
3 2 4
1 2 2 //矩陣c的第一行,第二列元素為2
1 3 3
2 1 1
2 2 2
===================================================================================
我寫得程序:
#include<string>
#include<iostream>
#include<fstream>
using namespace std;
void main()
{
int i,j;
int m,n;
int a,b,c,row1,row2,row3,row4;
ifstream input("add.txt");
ofstream output("result.txt");
input>>m; //存入input第一行第一個數作為最后要求的那個數的行標
input>>n; //存入input第一行第二個數作為最后要求的那個數的列標
input>>row1;
input>>row2;
input>>row3;
input>>row4;
int **ai=new int*[row1];//根據讀入的行、列數動態(tài)定義數組大小 ,生成第一個矩陣
for (i = 0; i < row1; ++i)
{
ai[i] = new int[row2];
}
int **bi=new int*[row2];//根據讀入的行、列數動態(tài)定義數組大小 ,生成第二個矩陣
for (i = 0; i < row2; ++i)
{
bi[i] = new int[row3];
}
int **ci=new int*[row3];//根據讀入的行、列數動態(tài)定義數組大小 ,生成第三個矩陣
for (i = 0; i < row3; ++i)
{
ci[i] = new int[row4];
}
for(i=0;i<row1;i++) //把每個矩陣都填充為0
for(j=0;j<row2;j++)
ai[i][j]=0;
for(i=0;i<row2;i++)
for(j=0;j<row3;j++)
bi[i][j]=0;
for(i=0;i<row3;i++)
for(j=0;j<row4;j++)
ci[i][j]=0;
int count=0; //從這里開始,將input中的數填充到對應矩陣中
while(input.good() && !input.eof())
{
input>>a;
if(a>=count) count=a;
else break;
input>>b;
input>>c;
ai[a][b]=c;
}
input>>b;
input>>c;
bi[a][b]=c;
count=0;
while(input.good() && !input.eof())
{
input>>a;
if(a>=count) count=a;
else break;
input>>b;
input>>c;
bi[a][b]=c;
}
input>>b;
input>>c;
ci[a][b]=c;
count=0;
while(input.good() && !input.eof())
{
input>>a;
if(a>=count) count=a;
else break;
input>>b;
input>>c;
ci[a][b]=c;
}
int g[30],e=0; //最后計算所求的那個數
for(int k=0;k<row3;k++)
{
for( int i=0;i<row2;i++)
{
e=ai[m][i]*bi[i][k];
g[k]=g[k]+e;
}
}
int t=0;
for(k=0;k<row3;k++)
{e=g[k]*ci[k][n];
t=t+e;}
output<<t<<endl;
}