c 矩陣相乘函式出錯

2025-07-10 06:30:17 字數 3270 閱讀 3803

1樓:網友

#include

using namespace std;

void mulmatri(int** x, int** y, int** z , int m, int n,int p)

int i,j,k;

for(i=0;ifor(j=0;jz[i][j]=0;

for(k=0;kz[i][j]+=x[i][k]*y[k][j];

int main(){

int** a,**b,**c;

int i,j;

a = new int*[2];

b = new int*[2];

c = new int*[2];

for (int ii=0;ii<2;ii++)a[ii] =new int[2];

b[ii] =new int[1];

c[ii] =new int[1];

a[0][0]=1;a[0][1]=-1;a[1][0]=1;a[1][1]=1;

b[0][0]=1;b[1][0]=0;

mulmatri(a,b,c,2,2,1);

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

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

coutb賦值出現錯誤,應該是b[1][0]=0,不是b[0][1]=0;

b是2×1的陣列。

2樓:網友

你的程式根本就不完整,不正確液鋒的情況下是什麼結果,都描述清楚,最好形象的列出矩陣值?

還有,你的提問不少,但是槐埋坦不知道為什麼從來鉛桐不。

c++矩陣相乘問題,子函式要怎麼呼叫才不出錯?

3樓:網友

加上強制轉換即可:

trmul((double*)a,(double*)b,2,3,2,(double*)c);

#include

void trmul(double a,double b,int m,int n,int s,double c);

using namespace std;

int main()

double b[3][2]=;

double c[2][2];

trmul((double*)a,(double*)b,2,3,2,(double*)c);

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

for(int j=0;j<2;j++)cout<

4樓:網友

這要看你出啥錯誤了,具體錯誤具體對待。

5樓:匿名使用者

你好!!

函式應用的時候,改成:

trmul(*a,*b,2,3,2,*c);

用c語言寫乙個兩個矩陣相乘的函式

6樓:薄涼知秋

能量項鍊你會麼?某年的noip上的題,矩陣乘法和它差不多。

c++:編寫求矩陣[b] n×s和[c] c×m相乘的子函式。其中[b]和[c]中各元素的值須由檔案中讀入。程式有錯,幫改

7樓:網友

標頭檔案要加上副檔名。h

m,n重複定義全域性變數會在主函式中倍遮蔽,將main()中的m,n定義去掉但要先置m,n初值。

不大清楚為什麼使用n+1,m+1;陣列下標由0開始做才對,因為在呼叫f()時也是在呼叫a[0][0],b[0][0],c[0][0]的位址。

並不是所有編譯器都能識別大小寫的區別(windows環境下大多不能),建議更改m,n和m,n以免造成重複定義,而重複定義通常引發記憶體呼叫的邏輯衝突。

8樓:網友

你為什麼建立了兩套m,n(main中乙個,全域性變數又乙個)

把 main中的m,n定義刪去看行不行。

9樓:網友

c++程式有測試選項的吧 點下 然後雙擊那錯誤點 它會提示你哪一行有錯誤 還有寫源命令的時候是#include吧。

c語言矩陣相乘出錯

10樓:小蘿蔔

改成這樣就可以了:

1、第二層迴圈改成:for (j = 0; j < 4; j++)2、第三層迴圈改成:for (int k = 0; k < 3; k++)

3、第三層的迴圈體改成:xyz1[i][j] += r1[i][k] *xyf1[k][j];

完成測試**如下:

#include

int main()

int r1[3][3] =;

int xyf1[3][4]=;

int xyz1[3][4]=;

int i,j;

for (i = 0; i < 3; i++)for (j = 0; j < 4; j++)/*xyz1[i][j] = 0;*/

for (int k = 0; k < 3; k++)xyz1[i][j] += r1[i][k] *xyf1[k][j];

printf("%d\t",xyz1[i][j]);

printf("");

編寫求矩陣[b] n×s和[c] c×m相乘的子函式。其中[b]和[c]中各元素的值須由檔案中讀入。

11樓:猴墓媚

那n s c m 的值也在檔案中??求。

編寫乙個函式實現矩陣a(2行3列)與矩陣b(3行2列)相乘,乘積放在c陣列中。在主

12樓:網友

#include

using namespace std;

int main()

int b[3][2] = ;

int c[2][2] = ;

cout <<"輸入矩陣a(

2行3列)元素的各個值:" >a[i][j];

cout <<"輸入矩陣b(3行2列)元素的各個值:" >b[i][j];

for(int i = 0;i < 2;i++)for(int j = 0;i < 2;j++)for(int k = 0;k < 3;k++)c[ i ][j ] = a[j][k] *b[k][j];

cout <<"結果為: "

c語言3行3列矩陣相乘寫法C語言3行3列矩陣相乘寫法

直接將a i j 乘以b i j 賦值給c i j include void main int b 3 3 int c 3 3 int i,j printf a is n for i 0 i 3 i printf b is n for i 0 i 3 i for i 0 i 3 i for j 0 ...

51微控制器c語言定義函式出錯望各位大神指教

1 函式沒有自 申明就使用了bai。2 函式呼叫,du不能省略括號。zhi3 for迴圈的 表示式 dao1 表示式2 表示式3 表示式4 中表示式2 為 表示式4是否執行的判讀依據,應該使用 邏輯判斷運算子 不該使用 賦值符 51微控制器 c語言裡 nop 函式怎麼用 具體一點 求高手指教 1 c...

計算下列矩陣乘積,計算下列矩陣(三個矩陣相乘),寫下過程,謝謝!

您好!1.a n 0 0 0 b n 0 0 0 c n 2.a 2 b 2 c 2 3.a 2 ab ac ba b 2 bc ca cb c 2 如果認為講解不夠清楚,請追問。如果滿意,請採納,謝謝!祝 學習進步! 笑書神俠客 以前回答過類似的問題所以直接複製貼上了。一樓的答案很正確,我就不給你...