[問題] 矩陣轉置結果卻不如預期

看板C_and_CPP作者 (專心致志)時間15年前 (2010/10/31 20:48), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 小弟我在寫到A轉成A的轉置矩陣時遇到一些問題 就轉置的結果跟我預期的不一樣 希望得到的正確結果: 我的預期是 TofA[j][i]=A[i][j]; 那麼TofA[i][j]應該就是TofA原來的矩陣 程式跑出來的錯誤結果: 如果寫TofA[j][i]等於A[i][j]這很正常沒錯 寫成TofA[i][j] 我的TofA跑出來的結果右上都變成0 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev C++, Windows XP SP3 有問題的code: (請善用置底文標色功能) #include <stdio.h> #include <stdlib.h> #define a 0.7071067811865476 #define b 0.4903926402016152 #define c 0.46193976625564337 #define d 0.4157348061512726 #define e 0.27778511650980114 #define f 0.19134171618254492 #define g 0.09754516100806417 int main(void) { double A[8][8]={{a,a,a,a,a,a,a,a}, {b,d,e,g,-g,-e,-d,-b}, {c,f,-f,-c,-c,-f,f,c}, {d,-g,-b,-e,e,b,g,-d}, {a,-a,-a,a,a,-a,-a,a}, {e,-b,g,d,-d,-g,b,-e}, {f,-c,c,-f,-f,c,-c,f}, {g,-e,d,-b,b,-d,e,-g}}; double picture[8][8]={{200,202,189,188,189,175,175,175}, {200,203,198,188,189,182,178,175}, {203,200,200,195,200,187,185,175}, {200,200,200,200,197,187,187,187}, {200,205,200,200,195,188,187,175}, {200,200,200,200,200,190,187,175}, {205,200,199,200,191,187,187,175}, {210,200,200,200,188,185,187,186}}; double TofA[8][8]={0}; int i,j; for(i=0;i<8;i++) { for(j=0;j<8;j++) { TofA[j][i]=A[i][j]; printf("%f ",TofA[i][j]); } printf("\n"); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.119.57.10

10/31 21:02, , 1F
%f 改 %lf ?
10/31 21:02, 1F

10/31 21:04, , 2F
一樣 沒有改變
10/31 21:04, 2F

10/31 21:06, , 3F
因為你在印TofA[i][j]的時候
10/31 21:06, 3F

10/31 21:07, , 4F
其實只有TofA[j][i]是對的 TofA[i][j]可能還沒跑到
10/31 21:07, 4F

10/31 21:11, , 5F
真的像樓上講的 多謝解答
10/31 21:11, 5F
文章代碼(AID): #1CpMMAo0 (C_and_CPP)