희소 행렬을 입력받아서 전치
MinA
희소행렬 입력받아서 전치하는거요
질문 내용 :
#includestdio.h
#includestdlib.h
#define max_terms 10001
typedef struct{
int col;
int row;
int value;
} term;void transpose(term a[], term b[]){
int n,i,j,currentb;
n=a[0].value;
b[0].row=a[0].col;
b[0].col=a[0].row;
b[0].value=n;
if(n0){
currentb=1;
for(i=0; ia[0].col; i++)
for(j=1; j=n; j++)
if(a[j].col==i){
b[currentb].row=a[j].col;
b[currentb].col=a[j].row;
b[currentb].value=a[j].value;
currentb++;
}
}
}
void main(){
file * fp=fopen(c:\\smarrdata.txt,rt);
file * fp1=fopen(c:\\smarrtrans_1.txt,wt);
int i,j;
int **c;
term *a;
term *b;
a=malloc(sizeof(term)*max_terms);
b=malloc(sizeof(term)*max_terms);c=malloc(sizeof(int)*max_terms);
for(i=0; imax_terms; i++)
c[i]=malloc(sizeof(int)*4);
for(i=0;imax_terms;i++)
for(j=0;j4;j++)
fscanf(fp,%d,&(c[i][j]));
for(i=0;imax_terms;i++){
for(j=0;j4;j++){
if(j==0)
continue;
if(j==1)
a[i].col=c[i][j];
if(j==2)
a[i].row=c[i][j];
if(j==3)
a[i].value=c[i][j];
}
}
transpose(a,b);
for(i=0;imax_terms;i++)
fprintf(fp1,smarray[%d] %d %d %d\n,i,b[i].row,b[i].col,b[i].value);
free(a);
free(b);
free(c);
fclose(fp);
fclose(fp1);
}
왜 나머지 두개에 -842150451
이 나오죠..