導航:首頁 > 源碼編譯 > 三元組矩陣的轉置演算法代碼

三元組矩陣的轉置演算法代碼

發布時間:2024-06-10 08:13:11

㈠ 緙栧啓鐢ㄢ滀笁鍏冪粍琛ㄢ濆瓨鍌ㄧ█鐤忕煩闃碉紝榪涜岀煩闃靛勭悊鐨勭▼搴忋傚疄鐜幫紙1錛夌煩闃佃漿緗 錛2錛夌煩闃電浉鍔

鐭╅樀鍔犲噺娉ㄦ剰鏍煎紡
#include <stdio.h>
#define maxsize 20
typedef int data;
typedef struct
{
int i,j;
data v;
}mat;
typedef struct
{
int m,n,t;
mat dtt[maxsize+1];
}matrix;
matrix a,b,c;
void transmat(matrix a,matrix *b)
{
int p,q,col;
b->m=a.n;
b->n=a.m;
b->t=a.t;
if(a.t!=0)
{
q=1;
for(col=1;col<=a.n;col++)
for(p=1;p<=a.t;p++)
if(a.dtt[p].j==col)
{
b->dtt[q].j=a.dtt[p].i;
b->dtt[q].i=a.dtt[p].j;
b->dtt[q].v=a.dtt[p].v;
q++;
}
}
}
void creat(matrix *x)
{
printf("\nn,m,t=?");
scanf("%d,%d,%d",&x->n,&x->m,&x->t);
for(int i=1;i<=x->t;i++)
{
printf("\ni,j,v=?");
scanf("%d,%d,%d",&x->dtt[i].i,&x->dtt[i].j,&x->dtt[i].v);
}
}
void mout(matrix x)
{
printf("\nn,m,t=");
printf("%d,%d,%d\n",x.n,x.m,x.t);
for(int i=1;i<=x.t;i++)
{
printf("\ni,j,v=");
printf("%d,%d,%d\n",x.dtt[i].i,x.dtt[i].j,x.dtt[i].v);
}
}
void jiajian(matrix x,matrix y,matrix *b)
{
int t;
printf("\n1鍔");
printf("\n2鍑\n\n");
scanf("%d",&t);
if(t==1)
{
int s=0,j=1,z=1;
b->m=x.m;
b->n=x.n;
for(int i=1;i<=b->n;i++)
{
for(;j<=x.t,z<=y.t;)
{
if(x.dtt[j].i!=i&&y.dtt[z].i!=i)
{
break;
}
else if(x.dtt[j].i!=i)
{
s++;
b->dtt[s].i=i;
b->dtt[s].j=y.dtt[z].j;
b->dtt[s].v=y.dtt[z].v;
z++;
}
else if(y.dtt[z].i!=i)
{
s++;
b->dtt[s].i=i;
b->dtt[s].j=x.dtt[j].j;
b->dtt[s].v=x.dtt[j].v;
j++;
}
else if(x.dtt[j].j>y.dtt[z].j)
{
s++;
b->dtt[s].i=i;
b->dtt[s].j=y.dtt[z].j;
b->dtt[s].v=y.dtt[z].v;
z++;
}
else if(x.dtt[j].j==y.dtt[z].j)
{
s++;
b->dtt[s].i=i;
b->dtt[s].j=y.dtt[z].j;
b->dtt[s].v=y.dtt[z].v+x.dtt[j].v;
z++;
j++;
}
else if(x.dtt[j].j<y.dtt[z].j)
{
s++;
b->dtt[s].i=i;
b->dtt[s].j=x.dtt[j].j;
b->dtt[s].v=x.dtt[j].v;
j++;
}
}
}
b->t=s;
}
else if(t==2)
{
int s=0,j=1,z=1;
b->m=x.m;
b->n=x.n;
for(int i=1;i<=b->n;i++)
{
for(;j<=x.t,z<=y.t;)
{
if(x.dtt[j].i!=i&&y.dtt[z].i!=i)
{
break;
}
else if(x.dtt[j].i!=i)
{
s++;
b->dtt[s].i=i;
b->dtt[s].j=y.dtt[z].j;
b->dtt[s].v=-y.dtt[z].v;
z++;
}
else if(y.dtt[z].i!=i)
{
s++;
b->dtt[s].i=i;
b->dtt[s].j=x.dtt[j].j;
b->dtt[s].v=x.dtt[j].v;
j++;
}
else if(x.dtt[j].j>y.dtt[z].j)
{
s++;
b->dtt[s].i=i;
b->dtt[s].j=y.dtt[z].j;
b->dtt[s].v=-y.dtt[z].v;
z++;
}
else if(x.dtt[j].j==y.dtt[z].j)
{
if(x.dtt[j].v-y.dtt[z].v!=0)
{
s++;
b->dtt[s].i=i;
b->dtt[s].j=y.dtt[z].j;
b->dtt[s].v=x.dtt[j].v-y.dtt[z].v;
}
z++;
j++;
}
else if(x.dtt[j].j<y.dtt[z].j)
{
s++;
b->dtt[s].i=i;
b->dtt[s].j=x.dtt[j].j;
b->dtt[s].v=x.dtt[j].v;
j++;
}
}
}
b->t=s;
}
}
int main(int argc, char *argv[])
{
printf("1鍒涘緩\n");
printf("2杞緗\n");
printf("3鐭╅樀鍔犲噺\n");
printf("4閫鍑\n");
printf("\n\n\n");
int t;
while(~scanf("%d",&t))
{
if(t==1)
{
creat(&a);
}
else if(t==2)
{
transmat(a,&b);
mout(b);
}
else if(t==3)
{
creat(&c);
jiajian(a,c,&b);
mout(b);
}
else if(t==4)
break;
printf("\n\n\n");
printf("1鍒涘緩\n");
printf("2杞緗\n");
printf("3鐭╅樀鍔犲噺\n");
printf("4閫鍑\n");
printf("\n\n\n");
}

return 0;
}

閱讀全文

與三元組矩陣的轉置演算法代碼相關的資料

熱點內容
java以什麼開頭 瀏覽:816
蘋果手機相冊文件夾如何清理 瀏覽:398
伺服器雲電腦搭建教程 瀏覽:410
eco怎麼搭建伺服器 瀏覽:468
周轉材料核演算法 瀏覽:356
學nodejs還是php好 瀏覽:279
電信營業廳app怎麼買q幣 瀏覽:917
linux退出登陸 瀏覽:534
python查找相似圖片的代碼 瀏覽:335
趙麗pdf 瀏覽:659
如何蘋果手機app不要自動更新 瀏覽:978
pythonflask路線教程 瀏覽:256
程序員職業有哪些好處 瀏覽:711
大都會軟體app如何掃碼 瀏覽:436
單片機0x38 瀏覽:756
程序員浪漫工作 瀏覽:331
php幾分鍾前 瀏覽:308
項目編譯及運行 瀏覽:895
程序員的基本功 瀏覽:524
遺傳演算法排班 瀏覽:291