真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

用c語言編寫一個方陣函數(shù) C語言定義一個矩陣

用C語言編寫一個矩陣運算的程序,高分!

//矩陣三元組之矩陣相加 相乘

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、成都微信小程序、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了柯坪免費建站歡迎大家使用!

#include iostream

using namespace std;

typedef int Elemtype;

#define MAXSIZE 12500 //最大非零元素

typedef struct Triple

{

Elemtype value;

int row,col;

}Triple;

typedef struct TSMatrix

{

Triple data[MAXSIZE+1];

int mu,nu,tu;

}TSMatrix;

TSMatrix T;

void InputMatrix(TSMatrix T) //輸入t個非零元素

{

cout"請輸入稀疏矩陣的信息,(行,列,非零元素個數(shù))"endl;

cinT.muT.nuT.tu;

int i;

cout"請輸入非零元素的信息(行,列,值),提醒(下標(biāo)從1開始)"endl;

for(i=1;i=T.tu;++i)

{

cinT.data[i].rowT.data[i].colT.data[i].value;

}

}

void Output(TSMatrix T)

{

cout"矩陣的三元組表示(ROW=)"T.mu" COL="T.nu"非零個數(shù)="T.tuendl;

int i;

for(i=1;i=T.tu;++i)

{

cout"ROW(行):"T.data[i].row" COL(列):"T.data[i].col" Value(值)"T.data[i].valueendl;

}

}

void TransposeSMatrix(TSMatrix M,TSMatrix T) //矩陣的轉(zhuǎn)置

{

T.mu=M.nu;T.nu=M.mu;T.tu=M.tu;

int i,j,k=1;

for(i=1;i=M.nu;++i)

{

for(j=1;j=M.tu;++j)

if(M.data[j].col==i)

{

T.data[k].row=i;

T.data[k].col=M.data[j].row;

T.data[k].value=M.data[j].value;

++k;

}

}

}

void AddMastrix(TSMatrix M,TSMatrix T,TSMatrix Q) //矩陣相加

{

int index_a,index_b,i=1,j=1,k=1;

Q.mu=M.mu; Q.nu=M.nu;

while (i=M.tuj=T.tu)

{

index_a=(M.data[i].row)*(M.data[i].col)+M.data[i].col;

index_b=(T.data[j].row)*(T.data[j].col)+T.data[j].col;

if(index_aindex_b)

{

Q.data[k]=M.data[i];

i++;

k++;

}

else if(index_aindex_b)

{

Q.data[k]=T.data[j];

j++;

k++;

}

else if(index_a==index_b)

{

if((M.data[i].value+T.data[j].value)!=0)

{

Q.data[k]=M.data[i];

Q.data[k].value=M.data[i].value+T.data[j].value;

k++;

}

++i;

++j;

}

}

//復(fù)制剩余元素

for(;i=M.tu;++i)

{

Q.data[k]=M.data[i];

k++;

}

for(;j=T.tu;++j)

Q.data[k++]=T.data[j];

Q.tu=k-1;

}

void Multiply(TSMatrix M,TSMatrix T,TSMatrix Q) //相乘

{

if(M.nu!=T.mu)

{

cerr"兩矩陣相乘不合法"endl;

return ;

}

int *rowSize=new int[T.mu+1]; //存放每行非零元素的個數(shù)

int *rowStart=new int[T.mu+2]; //矩陣每行在三元組開始位置

int *temp=new int[T.nu+1]; //存放結(jié)果矩陣中每行的計算結(jié)果

int i,Current,k,ROWM,COLM,COLB;

for(i=1;i=T.mu;i++) rowSize[i]=0;

for(i=1;i=T.tu;++i) rowSize[T.data[i].row]++;

rowStart[1]=1;

for(i=2;i=T.mu+1;i++)

rowStart[i]=rowStart[i-1]+rowSize[i-1];

Current=1; k=1;

while (Current=M.tu)

{

ROWM=M.data[Current].row; //當(dāng)前三元組數(shù)據(jù)中元素的行號

for(i=1;i=T.nu;++i) temp[i]=0;

while (Current=M.tuROWM==M.data[Current].row)

{

COLM=M.data[Current].col; //當(dāng)前元素的列號,方便與T矩陣的行號相乘

for(i=rowStart[COLM];irowStart[COLM+1];i++) //對應(yīng)T矩陣中每行的個數(shù)

{

COLB=T.data[i].col;

temp[COLB]+=(M.data[Current].value)*(T.data[i].value);

}

Current++;

}

for(i=1;i=T.nu;i++)

{

if(temp[i]!=0)

{

Q.data[k].row=ROWM;

Q.data[k].col=i;

Q.data[k].value=temp[i];

}

k++;

}

}

Q.mu=M.mu;Q.nu=T.nu;

Q.tu=k-1;

}

int main()

{

TSMatrix T,M,Q,S;

InputMatrix(M);

InputMatrix(T);

cout"兩矩陣相乘"endl;

Multiply(M,T,Q);

Output(Q);

cout"兩矩陣相加"endl;

AddMastrix(M,M,S);

Output(S);

system("pause");

return 0;

}

用c語言設(shè)計一n階方陣!急!!

#include stdio.h

#includemalloc.h

void matrix(int x,int y) //這里都是向一個方向發(fā)展的。

{

int **a;

a = (int **)malloc(x*sizeof(int)); //分配空間。

int num = x+y-1;

int k;

for(k=0;kx;k++)

{

a[k] = (int *)malloc(y*sizeof(int));

}

int i;

int j;

int start=1; //從1開始的。元素的起始值。

for(k=0;knum;k++)

{

for(i=0;iy;i++) //這是列坐標(biāo),因為列是在行變后才變的。

{

for(j=0;jx;j++) //這是行坐標(biāo)。

{

if(i+j == k)

{

a[j][i] = start;

//printf("%d\n",a[j][i]);

start++;

}

}

}

//printf("k=%d\n",k);

}

for(i=0;ix;i++) //輸出矩陣。

{

for(j=0;jy;j++)

{

printf("%3d",a[i][j]);

}

printf("\n");

}

for(k=0;kx;k++) //釋放空間。

{

free(a[k]);

}

free(a);

}

int main()

{

int n;

printf("please input (1-9):\n");

scanf("%d",n);

matrix(n,n);

printf("\n");

matrix(3,5);

getchar();

getchar();

return 0;

}

c語言編程題,編寫一個函數(shù),實現(xiàn)n階方陣的轉(zhuǎn)置(即行列互換)急急急?。?!感謝

#include stdio.h

#include stdlib.h

int main()

{? ?int a[3][3]={1,2,3,4,5,6,7,8,9};

int j,i,temp;

for(i=0;i3;i++)

for(j=0;j3;j++)

scanf("%d",a[i][j]);

for(i=1;i2;i++)

for(j=0;j=i;j++)

{

temp=a[i][j];

a[i][j]=a[j][i];

a[j][i]=temp;

}

for(i=0;i3;i++)

for(j=0;j3;j++)

{

printf("%d ",a[i][j]);

if(j==2)printf("\n");

}

return 0;

}

擴展資料:

需要說明的是:

1、一個C語言源程序可以由一個或多個源文件組成。

2、每個源文件可由一個或多個函數(shù)組成。

3、一個源程序不論由多少個文件組成,都有一個且只能有一個main函數(shù),即主函數(shù)。是整個程序的入口。

4、源程序中可以有預(yù)處理命令(包括include 命令,ifdef、ifndef命令、define命令),預(yù)處理命令通常應(yīng)放在源文件或源程序的最前面。

5、每一個說明,每一個語句都必須以分號結(jié)尾。但預(yù)處理命令,函數(shù)頭和花括號“}”之后不能加分號。結(jié)構(gòu)體、聯(lián)合體、枚舉型的聲明的“}”后要加“ ;”。

6、標(biāo)識符,關(guān)鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。

參考資料:

百度百科-二維數(shù)組

百度百科-c語言

C語言編程:編寫一個函數(shù),實現(xiàn)矩陣的乘法。

如果確定距陣的大小長度,定義兩個二維數(shù)組,用兩個for循環(huán)兩數(shù)據(jù)輸入到內(nèi)存,是每兩個for輸入一個數(shù)組,然后定義另外一個數(shù)組,用來得到結(jié)果距陣,再用三個嵌套的for將結(jié)果放入第三個數(shù)組當(dāng)中,即c[i][j]=a[i][k]+b[k][j],k是在第三重循環(huán),這樣就可以得到要求的距陣,如果不確定大小長度就在輸入語句的每個for循環(huán)的轄區(qū)內(nèi)加一個變量作為標(biāo)記程序運行時求出距陣的大小


網(wǎng)頁標(biāo)題:用c語言編寫一個方陣函數(shù) C語言定義一個矩陣
URL鏈接:http://weahome.cn/article/hgpscc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部