[問題] 陣列相乘問題

看板C_and_CPP (C/C++)作者 (見笑轉生氣)時間13年前 (2013/01/02 22:50), 編輯推噓4(404)
留言8則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) C語言 問題(Question): 陣列相乘,參考網路上弄出來的,可是答案不對 我也弄不出小數點 ... 餵入的資料(Input): 已包含在程式碼中 陣列A(兩行四列) 4.5 2.3 5.3 6.7 3.2 4.6 2.4 6.7 陣列B(四行三列) 4.5 7.4 2.3 6.7 3.4 9.8 3.4 2.4 2.4 9.4 3.7 4.3 預期的正確結果(Expected Output): 82.91 115.4 83.9 105.2 82.8 114.3 錯誤結果(Wrong Output): 82.91 83.88 82.78 115.4 105.2 114.33 程式碼(Code):(請善用置底文網頁, 記得排版) #include<stdio.h> void main() { int i,j,k; int a[2][4]={{4.5,5.3,3.2,2.4},{2.3,6.7,4.6,6.7}}; int b[4][3]={{4.5,3.4,2.4},{7.4,9.8,9.4},{2.3,3.4,3.7},{6.7,2.4,4.3}}; int c[2][3]; for(i=0;i<2;i++)//i是a的行数 for(j=0;j<3;j++){//j是b的列数 c[i][j]=0; for(k=0;k<4;k++)//k是a的列数,b的行数 c[i][j]=c[i][j]+a[i][k]*b[k][j]; } for(i=0;i<2;i++){ for(j=0;j<3;j++) printf("%d ",*(*(c+i)+j)); printf("\n"); } } 感謝解答!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.99.77.7 ※ 編輯: kusou86el 來自: 58.99.77.7 (01/02 22:53)

01/02 22:51, , 1F
a , b, c 改 double 宣告, %d 改 %lf
01/02 22:51, 1F

01/02 22:51, , 2F
型態...?
01/02 22:51, 2F
感謝EdisonX 有小數點了 答案對了,可是排序不對 我改在上面,感謝解答!! ※ 編輯: kusou86el 來自: 58.99.77.7 (01/02 22:57)

01/03 00:40, , 3F
沒印錯呀 a[2][4] 與原矩陣的排列 及c[2][3]結果一樣
01/03 00:40, 3F

01/03 00:41, , 4F
你印的時候 i是列 j 是行
01/03 00:41, 4F

01/03 01:21, , 5F
用row和col表示比較好 a[row][col] 兩岸的行列意義不一樣
01/03 01:21, 5F

01/03 01:55, , 6F
對!兩岸的行列是相反的,只有在幾行(line)程式 是一樣的.
01/03 01:55, 6F

01/03 02:14, , 7F
印的順序改一下就好了 http://codepad.org/GpyYeUon
01/03 02:14, 7F

01/03 02:18, , 8F
BTW...你的矩陣是 column-major 的,所以是 a[col][row]
01/03 02:18, 8F
了解!!非常感謝各位!! ※ 編輯: kusou86el 來自: 59.126.42.146 (01/03 21:27)
文章代碼(AID): #1Gv4aTO1 (C_and_CPP)
文章代碼(AID): #1Gv4aTO1 (C_and_CPP)