色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

三階矩陣乘三階矩陣的例題

傅智翔2年前18瀏覽0評論

三階矩陣乘三階矩陣的例題?

例題:

輸入矩陣的行列,分別輸入兩個矩陣,輸出矩陣相乘的結果

#include<bits/stdc++.h>

using namespace std;

int main(){

int a,b,c;

cout<<"請輸入兩矩陣的行列:"<<endl;

cin>>a>>b>>c; //分別錄入第一個矩陣的行,兩矩陣共同行列,第二個矩陣的列

int X[a][b],Y[b][c],Z[a][c]; //開辟三個二維數組存儲矩陣,注意相乘結果的行列值

cout<<"請輸入第一個矩陣:"<<endl;

for(int i=0;i<a;i++){ //矩陣的行

for(int j=0;j<b;j++){ //矩陣的列

cin>>X[i][j];

}

}

cout<<"請輸入第二個矩陣:"<<endl;

for(int i=0;i<b;i++){ //矩陣的行

for(int j=0;j<c;j++){ //矩陣的列

cin>>Y[i][j];

}

}

memset(Z,0,sizeof(Z)); //將二維數組Z初始化為0

//int temp=0;

cout<<"矩陣相乘的結果為:"<<endl;

for(int i=0;i<a;i++){

for(int j=0;j<c;j++){

for(int k=0;k<b;k++){

Z[i][j]=Z[i][j]+X[i][k]*Y[k][j]; //行與列的乘積和為相應結果值

//temp=temp+X[i][k]*Y[k][j];

}

cout<<Z[i][j]<<" "; //計算完一個后輸出

//cout<<temp<<" ";

//temp=0;

}

cout<<endl; //計算完一列后輸出換行

}

return 0;

}

//本程序也可以不開辟存放結果的二維數組矩陣,直接將結果累加到temp中進行輸出,

//當輸出后重新將temp中的值置0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

注意memset函數:

memset函數實現對指定內存空間初始化的作用。

memset(Z,0,sizeof(Z)); //將二維數組Z初始化為0

int float long string sizeof函數返回數組元素空間的4倍數(一元素占4字節)

char sizeof函數返回數組元素空間大小(一元素占1字節)

double sizeof函數返回數組元素空間8倍數(一元素占8字節)

將矩陣相乘的方法體拿出來

#include<bits/stdc++.h>

using namespace std;

int jzcheng(int *q, int *w, int h, int l, int k) //定義兩個指針,指向二維數組變為一維數組后的首地址

{

int Z[h][k]; //h*k

// memset(Z, 0, sizeof(Z)); //將二維數組Z初始化為0

//int temp=0;

//cout<<"矩陣相乘的結果為:"<<endl;

//cout<<'\n';

for(int i = 0; i < h; i++)

{

for(int j = 0; j < k; j++)

{

Z[i][j]=0;

for(int n = 0; n < l; n++)

{

Z[i][j] = Z[i][j] + q[i * l + n] * w[n * k + j]; //行與列的乘積和為相應結果值,認真思考為什么是這樣,看作一維數組

//temp=temp+X[i][k]*Y[k][j];

}

cout << Z[i][j] << " "; //計算完一個后輸出

//cout<<temp<<" ";

//temp=0;

}

cout<<'\n';

}

}

int main()

{

int a, b, c;

cout << "請輸入兩矩陣的行列:" << endl;

cin >> a >> b >> c; //分別錄入第一個矩陣的行,兩矩陣共同行列,第二個矩陣的列

int X[a][b], Y[b][c]; //開辟三個二維數組存儲矩陣,注意相乘結果的行列值

cout << "請輸入第一個矩陣:" << endl;

for(int i = 0; i < a; i++) //矩陣的行

{

for(int j = 0; j < b; j++) //矩陣的列

{

cin >> X[i][j];

}

}

cout << "請輸入第二個矩陣:" << endl;

for(int i = 0; i < b; i++) //矩陣的行

{

for(int j = 0; j < c; j++) //矩陣的列

{

cin >> Y[i][j];

}

}

jzcheng(*X, *Y, a, b, c);

//也可寫作jzcheng(X[0], Y[0], a, b, c);均代表以a[0][0]為首元素的一維數組;可用作指針

return 0;

}

//本程序也可以不開辟存放結果的二維數組矩陣,直接將結果累加到temp中進行輸出,

//當輸出后重新將temp中的值置0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

用vector定義二維數組,避免指針情況

#include<bits/stdc++.h>

using namespace std;

int jzcheng(vector<vector<int> >X, vector<vector<int> >Y, int h, int l, int k)

{

int Z[h][k];//h*k

memset(Z, 0, sizeof(Z)); //將二維數組Z初始化為0

//int temp=0;

cout<<"矩陣相乘的結果為:"<<endl;

//cout<<'\n';

for(int i = 0; i < h; i++)

{

for(int j = 0; j < k; j++)

{

//Z[i][j]=0;

for(int n = 0; n < l; n++)

{

Z[i][j] = Z[i][j] + X[i][n] * Y[n][j]; //行與列的乘積和為相應結果值

//temp=temp+X[i][k]*Y[k][j];

}

cout << Z[i][j] << " "; //計算完一個后輸出

//cout<<temp<<" ";

//temp=0;

}

cout<<'\n';

}

}

int main()

{

int a, b, c;

cout << "請輸入兩矩陣的行列:" << endl;

cin >> a >> b >> c; //分別錄入第一個矩陣的行,兩矩陣共同行列,第二個矩陣的列

vector<vector<int> >X;

vector<vector<int> >Y;

X.resize(a);

for(int i=0;i<X.size();i++){

X[i].resize(b);

}

Y.resize(b);

for(int i=0;i<Y.size();i++){

Y[i].resize(c);

} //開辟三個二維數組存儲矩陣,注意相乘結果的行列值

cout << "請輸入第一個矩陣:" << endl;

for(int i = 0; i < a; i++) //矩陣的行

{

for(int j = 0; j < b; j++) //矩陣的列

{

cin >> X[i][j];

}

}

cout << "請輸入第二個矩陣:" << endl;

for(int i = 0; i < b; i++) //矩陣的行

{

for(int j = 0; j < c; j++) //矩陣的列

{

cin >> Y[i][j];

}

}

jzcheng(X, Y, a, b, c);

return 0;

}

php 數組 轉置,三階矩陣乘三階矩陣的例題