1. 程式人生 > >稀疏矩陣的儲存及運算

稀疏矩陣的儲存及運算

main()
{int a[max][3],b[max][3],a1[max][3],b1[max][3],c[max][3],d[max][3];
 int i,y;
 printf("輸入稀疏方陣A的行數,列數和非零元個數:");
 scanf("%d,%d,%d",&a[0][0],&a[0][1],&a[0][2]);
 for(i=1;i<=a[0][2];i++)
 {
  printf("輸入第%d個非0元素的行數,列數和值:",i);
  scanf("%d,%d,%d",&a[i][0],&a[i][1],&a[i][2]);
 }
 printf("輸出A的三元組表示:/n");
 print(a);
 printf("/n輸入稀疏方陣B的行數,列數和非零元個數:");
 scanf("%d,%d,%d",&b[0][0],&b[0][1],&b[0][2]);
 for(i=1;i<=b[0][2];i++)
 {
  printf("輸入第%d個非0元素的行數,列數和值:",i);
  scanf("%d,%d,%d",&b[i][0],&b[i][1],&b[i][2]);
 }
 printf("輸出B的三元組表示:/n");
 print(b);
 printf("/n");
 printf("=============  菜      單 ==============/n");
 printf("                           1 A矩陣轉置/n");
 printf("                           2 B矩陣轉置/n");
 printf("                           3 C = A + B/n");
 printf("                           4 D = A * B/n");
 printf("======================================/n/n");
 loop: printf("請選擇相應操作的序號:");
 scanf("%d",&y);
 switch(y)
 {case 1: convert(a,a1);
          printf("輸出A轉置的三元組表示:/n");
          print(a1);
          printf("/n");
          goto loop;
  case 2: convert(b,b1);
       printf("輸出B轉置的三元組表示:/n");
    print(b1);
    printf("/n");
    goto loop;
  case 3: add(a,b,c);
       printf("輸出C=A+B的三元組表示:/n");
       print(c);
    printf("/n");
    goto loop;
  case 4: multi(a,b,d);
       printf("輸出D=A*B的三元組表示:/n");
       print(d);
    printf("/n");
    goto loop;
 }
}