#include
#include
#include
using namespace std;
struct tmp{
int row;
int cols;
int notzero;
};
int main(int argc, char *argv[])
{
struct tmp a[100],b[100];
int d[2][4];
int a1,a2,a3,a4,valuetmp,sumtmp=0;
int r=0,u=0;
FILE *fpin=fopen("inputa.txt","r");
FILE *fpout=fopen("output1.txt","w");
fscanf(fpin,"%d %d",&a1,&a2);
cout
for(int j=0;j
fscanf(fpin,"%d",&valuetmp);
a[j*a2+i].row=j;
a[j*a2+i].cols=i;
a[j*a2+i].notzero=valuetmp;
if(a[j*a2+i].notzero!=0){
r++ ;
printf("%d %d %d",j,i,valuetmp);
cout
}
}
}
printf("%d %d %d ",a1,a2,r); //表示A有a1個row,a2個column,以及r個非0的值
cout
fclose(fpin);
FILE *fpin1=fopen("inputb.txt","r");
fscanf(fpin1,"%d %d",&a3,&a4);
cout
for(int j=0;j
fscanf(fpin,"%d",&valuetmp);
b[j*a4+i].row=j;
b[j*a4+i].cols=i;
b[j*a4+i].notzero=valuetmp;
if(b[j*a4+i].notzero!=0){
u++;
printf("%d %d %d",j,i,valuetmp);
cout
}
}
}
printf("%d %d %d ",a3,a4,u); //表示B有a3個row,a4個column,以及u個非0的值
cout
printf("A*B矩陣相乘\n");
for(int i=0;i
for(int p=0;p
for(int j=0;j
sumtmp=sumtmp+a[i*a2+j].notzero*b[j*a4+p].notzero;
}
d[i][p]=sumtmp;
printf("%2d\t",sumtmp);
sumtmp=0;
}
cout
}
fclose(fpin1);
for(int i=0;i
for(int j=0;j
fprintf(fpout,"%2d\t",d[i][j]);
}
fprintf(fpout,"\n");
}
system("PAUSE");
return EXIT_SUCCESS;
}
下面是執行的狀況
感謝阿德同學的指點,第一次寫讀文字檔進來的程式碼,沒有頭緒後來看了一下書,好久沒碰c語言了
再來看看能不能改用c++寫出來,看來我程式又要再加強才行~
- Oct 25 Sat 2008 14:05
資料結構--稀疏矩陣
close
全站熱搜
留言列表