當前位置:首頁 » 編程語言 » c語言輸出轉置矩陣

c語言輸出轉置矩陣

發布時間: 2023-04-05 10:02:53

c語言三元組輸入輸出的轉置矩陣

分類: 電腦/網路 >> 程序設計 >> 其他編程語言
解析:

用三元組存儲的稀疏矩陣的轉置運算

三元組採用行優先表示法,轉置後的矩陣的三元組同樣要採用行優先表示法

0 1 12

0 2 9

2 0 -3

3 5 14

3 2 24

4 1 18

5 0 15

5 3 -7

struct node

{

int i,j; 定義三元組的行、列號

int v; 三元組的值

};

struct sparmatrix

{

int rows,cols; 稀疏矩陣的行純指裂、列數

int terms; 稀疏矩陣的非零元個數

struct node data[maxsize]; 存放稀疏矩陣的三元組表

};

(1)按照A的列序進行轉置

由於A的列即為B的行,在a.data(原表)中,按列掃描,則得到的b.data(轉置表)必按行優先存放。

但為了找到A的每一列中所有的非零的元素,每次都必須從頭到尾掃描A的三元組表(有多少列,則掃描多少遍)

void transpose(struct sparmatrix a)

{

struct sparmatrix b; /*b為a的轉置*/

int ano,bno=0,col,i;

b.rows=a.cols; b.cols=a.rows;

b.terms=a.terms;

if (b.terms>0)

{

for ( col=0; col<a.cols; col++) /*按列號掃描*/

for( ano=0;ano<a.terms;ano++) /*對三元組掃描*/

if (a.data[ano].j==col) /*進行轉置*/

{ b.data[bno].j=a.data[ano].i;

b.data[bno].i=a.data[ano].j;

b.data[bno].v=a.data[ano].v;

bno++;

}

}

…………….

(2)按照A的行序進行轉置

即按a.data中三元組的次序進行轉置,並將轉置後的三元組放入b中恰當的位置。

若能在轉置前求出矩陣A的每一列col(即B中每一行)的第一個非零元轉置後在b.data中的正確位置pot[col](0≤col<a.cols),那麼在對a.data的三元組依次作轉置時,只要將三元組按列號col放置到b.data[pot[col]]中,之後將pot[col]內容加1,以指示第逗鉛col列的下一個非零做閉元的正確位置。

void fastrans(struct sparmatrix a)

{

struct sparmatrix b;

int pot[maxsize],col,ano,bno,t,i;

b.rows=a.cols; b.cols=a.rows;

b.terms=a.terms;

if(b.terms>0)

{

for(col=0;col<=a.cols;col++)

pot[col]=0;

for( t=0;t<a.terms;t++) /*求出每一列的非零元個數*/

{

col=a.data[t].j;

pot[col+1]=pot[col+1]+1;

}

pot[0]=0;

for(col=1;col<a.cols;col++) /*求出每一列的第一個非零元在轉置後的位置*/

pot[col]=pot[col-1]+pot[col];

for( ano=0;ano<a.terms;ano++) /*轉置*/

{ col=a.data[ano].j;

bno=pot[col];

b.data[bno].j=a.data[ano].i;

b.data[bno].i=a.data[ano].j;

b.data[bno].v=a.data[ano].v;

pot[col]=pot[col]+1;

}

}

❷ C語言編程:輸入一個2x3的矩陣,輸出它的轉置矩陣。

#include<stdio.h>拍判雀

int main()

{int a[2][3],b[3][2],i,j;

for(i=0;i<2;i++)

for(j=0;j<3;j++)

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

沖嘩b[j][i]=a[i][j];

}

printf("========== ");

for(i=0;i<3;i++)

{for(j=0;j<2;j++)

printf("襲早%4d",b[i][j]);

printf(" ");

}

return 0;

}

❸ c語言~使用函數 完成3×3矩陣轉置,輸入一矩陣,輸出其轉置矩陣。

#include<stdio.h>
#defineN3
intarray[N][N];
voidtransition(intarray[][3])
{
inti,j,temp;
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
{
temp=array[i][j];
array[i][j]=array[j][i];
array[j][i]=temp;
}
}
intmain(void)
{
voidtransition(intarray[][3]);
inti,j;
printf("請輸入數據 ");
高禪灶for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&array[i][j]);
printf(" ");
transition(array);
printf("調換數據如下 ");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%5d",array[i][j]);
printf(" ");
}
return0;
}
~~~~~~
我寫的代碼,你自襲廳己戚扮參考吧,很簡單的

❹ C語言編程實現2*3的矩陣轉置

#include<iostream>

usingnamespacestd;

voidzhuang(inta[3][3])

{intm,n,i;

for(m=0;m<2;m++)

for(i=0;i<3;i++)

{if(m!=1||i!=0)

{n=a[i][m];

a[i][m]=a[m][i];

a[m][i]=n;

intmain()

inta[3][3];

inti,j;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

cin>>a[i][j];

zhuang(a)做汪伏;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

cout<<a[i][j]<<"";

cout<<endl;

return0;

cout&lt;&lt;"處理後的矩陣:"&lt;&lt;endl;

for(i=0;i&lt;3;i++)//輸出處理後的矩陣

for(j=0;j&lt;3;j++)

cout&lt;&lt;setw(5)&lt;&lt;a&lt;i&gt;[j];

cout&lt;&lt;endl;

return0;

//交換函數

voidmove(int*pointer)

inti,j,t;

for(i=0;i&lt;3;i++)

for(j=i;j&lt;3;j++)

t=*(pointer+3*i+j);//這是關鍵將矩陣轉置的條件

*(pointer+3*i+j)=*(pointer+3*j+i);

*(pointer+3*j+i)=t;

運行效果:

(4)c語言輸出轉置矩陣擴展閱讀:

在C語言或C++中,會把用來#include的文件的擴展名叫.h,稱其為頭文件。

#include文件的目的就是把多個編譯單元(也就是c或者cpp文件)公用的內容,單獨放在一個文件里減少整體代碼尺寸;或者提供跨工程公共代碼。在現行的c++版本中,應用這個頭文件應是#include<stdio.h>

stdio 就是指 「standard input & output"(標准輸入輸出)所以,源代碼中如用到標准輸純攜入輸出函數時,就要包含這個頭文件!

例如c語言中的 printf("%d"陵旅,i); scanf("%d",&i);等函數。

❺ C語言編譯,目的是輸入一個四行四列的矩陣,找出最小值並輸出轉置矩陣

#include<stdio.h>
intmain()
{
inta[4][4];
intb[4][4];//
inti,j,min;
introw,colum;//
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
}
min=a[0][0];
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
if(a[i][j]<min)
{
min=a[i][j];
row=i;//
colum=j;//
}
}
printf("min=%d row=%d colum=%d ",min,row,colum);//
printf(" ");
printf(" ");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
b[j][i]=a[i][j];
}
}
printf("b: ");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
printf("%5d",b[i][j]);
}
printf(" ");
}
return0;
}

❻ c語言如何通過定義函數來轉置矩陣

#include <stdio.h>

int main()

{ struct aaa

{ int x;

int y;

};

struct aaa t,a[3][3]= {0,0,0,1,0,2,1,0,1,1,1,2,2,0,2,1,2,2};

int i,j;

for(i=0; i<3; i++)

{ for(j=0; j<3; j++)

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

printf(" ");

}

printf("after: ");

for(i=0; i<3; i++)

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

{ t=a[i][j];

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

a[j][i]=t;

}

for(i=0; i<3; i++)

{ for(j=0; j<3; j++)

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

printf(" ");

}

return 0;

}

或:

#include <stdio.h>

struct aaa

{ int x;

int y;

};

void zhuan(struct aaa a[][3])

{ struct aaa t;

int i,j;

for(i=0; i<3; i++)

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

{ t=a[i][j];

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

a[j][i]=t;

}

}

void prt(struct aaa a[][3])

{ int i,j;

for(i=0; i<3; i++)

{ for(j=0; j<3; j++)

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

printf(" ");

}


}

int main()

{ struct aaa a[3][3]= {0,0,0,1,0,2,1,0,1,1,1,2,2,0,2,1,2,2};

prt(a);

zhuan(a);

printf("after: ");

prt(a);

return 0;

}

❼ C語言矩陣轉置

//經握銷過vc6調試成功段畢游
void transferMat(int a[] , int b[], int n) //a表示待轉置的矩陣,b表示輸出矩陣,n表數拍示元素個數
{
int i,j;
for(i=0; i<n; i++)
for(j=0; j<n; j++)
{
b[j,i]=a[i,j];
}
}

熱點內容
早期存儲卡 發布:2024-11-02 14:26:50 瀏覽:988
配音秀緩存在手機哪裡 發布:2024-11-02 14:23:27 瀏覽:294
linux下載gcc 發布:2024-11-02 14:13:47 瀏覽:344
寫演算法交易 發布:2024-11-02 13:57:09 瀏覽:208
安卓怎麼下載鴻蒙 發布:2024-11-02 13:36:13 瀏覽:663
加密狗rsa 發布:2024-11-02 13:20:44 瀏覽:560
實用java教程 發布:2024-11-02 13:07:39 瀏覽:930
ide文件夾 發布:2024-11-02 12:51:37 瀏覽:559
python中字典的用法 發布:2024-11-02 12:40:42 瀏覽:28
安卓怎麼下載zine 發布:2024-11-02 12:40:38 瀏覽:793