[問題] 二維陣列相乘

看板C_and_CPP作者 (蝦咪挖溝)時間14年前 (2010/03/23 14:08), 編輯推噓3(3011)
留言14則, 6人參與, 最新討論串2/5 (看更多)
這是我寫出來的程式 不過印出來好像怪怪的 上面宣告陣列的時候寫成要指標表示 run到*(*(a+2)+3)={{2,2,6},{3,2,8}}; 好像也會卡住 不知道錯在哪裡說 #include <iostream> #include <stdlib.h> using namespace std; int main(void) { int a[2][3]={{2,2,6},{3,2,8}}; int b[3][2]={{3,5},{3,2},{2,2}}; int c[2][2]; int i, j, k; for (i=0;i<2;i++) { for (j=0;j<2;j++) { c[i][j]=0; for (k=0;k<3;k++) { *(*(c+i)+j)=*(*(a+i)+k)**(*(c+k)+j); } cout<<"c[i][j]="<<c[i][j]<< "\t"; cout << "\n"; } system("pause"); return 0; } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.217.104.26

03/23 14:25, , 1F
為什麼要刻意用不直覺的寫法?
03/23 14:25, 1F

03/23 14:25, , 2F
為什麼要寫 *(*(c+i)+j)=*(*(a+i)+k)**(*(c+k)+j);
03/23 14:25, 2F

03/23 14:25, , 3F
Cij += Aik*Bkj
03/23 14:25, 3F

03/23 14:25, , 4F
直接寫c[i][j] = a[i][k] * c[k][j];這樣就好了吧....
03/23 14:25, 4F

03/23 14:26, , 5F
你的式子好像應該是c[i][j]=a[i][k]*b[k][j]
03/23 14:26, 5F

03/23 14:26, , 6F
基本上,google可以找到很多程式碼。
03/23 14:26, 6F

03/23 14:26, , 7F
你可以對照你的
03/23 14:26, 7F

03/23 14:26, , 8F
但是你的後項卻帶了 c,所以超過邊界了
03/23 14:26, 8F

03/23 14:26, , 9F
另外, 你的算式是錯的, C.. += A.. * B.. 這樣@_@"
03/23 14:26, 9F

03/23 14:27, , 10F
哇靠~~忽然發現小弟我推慢了好多步....Orz
03/23 14:27, 10F

03/23 14:41, , 11F
因為問題的本身就是要我用指標來表示
03/23 14:41, 11F

03/23 14:45, , 12F
印出來結果好像還是怪怪的XD
03/23 14:45, 12F

03/23 15:35, , 13F
感覺他好像想用prefix
03/23 15:35, 13F

03/23 15:49, , 14F
我看錯了 原來是要用指標
03/23 15:49, 14F
文章代碼(AID): #1Bg5hsqX (C_and_CPP)
文章代碼(AID): #1Bg5hsqX (C_and_CPP)