X
تبلیغات
top_e_top - جمع دو ماتریس اسپارس

top_e_top

جمع دو ماتریس اسپارس

int i,j,k;
//*********************
int compare(int x,int y){
   if(x   else if(x==y)return 0;
   else return 1;
 }
//*********************
void add(int a[row][3],int b[row][3],int c[row][3]){
  int x,h;
  c[0][0]=a[0][0];
  c[0][1]=a[0][1];
  i=j=k=1;
  while(i<=a[0][2]&& j<=a[0][2]){
    switch(compare(a[i][0],b[j][0])){
     case -1:{
        c[k][0]=a[i][0];
        c[k][1]=a[i][1];
        c[k++][2]=a[i++][2];
        break;}
     case 0:{
        switch(compare(a[i][1],b[j][1])){
         case -1:{
          c[k][0]=a[i][0];
          c[k][1]=a[i][1];
          c[k++][2]=a[i++][2];
          break;}
         case 0:{
          x=a[i][2]+b[j][2];
          if(x!=0){
            c[k][0]=b[j][0];
            c[k][1]=b[j][1];
            c[k][2]=x;}
            i++;j++; k++;
            break;}
          case 1:{
           c[k][0]=b[j][0];
           c[k][1]=b[j][1];
           c[k++][2]=b[j++][2];
           break;}
          }
         break;}
        case 1:{
          c[k][0]=b[j][0];
          c[k][1]=b[j][1];
          c[k++][2]=b[j++][2];
          break;}
        } }
  for(h=i;h<=a[0][2];h++){
        c[k][0]=a[h][0];
        c[k][1]=a[h][1];
        c[k][2]=a[h][2];k++;
        }
  for(h=j;h<=b[0][2];h++){
        c[k][0]=b[h][0];
        c[k][1]=b[h][1];
        c[k][2]=b[h][2];k++;
        }
        c[0][2]=k-1;
        }

+ نوشته شده در  یکشنبه یازدهم بهمن 1388ساعت 15:23  توسط کریمی  |