English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

下面是我寫的陣列相乘
然後找出最大值
但出來的值都怪怪的
不知是那裡出錯
int main()
{
int nB[4][5]={{0,0,0,1,1},{1,1,0,1,0},{1,1,0,0,0},{1,0,1,1,1}};
int j,i=0,k,total=0,temp=0,temp1=0,temp2=0,max;

while(i>4)
{
for(j=1;j<4;j++)
{
for(k=0;k<5;k++)
{
temp=nB[i][k]*nB[j][k];
total=temp;

}
if(total>max)
{
max=total;
temp1=i;
temp2=j;
}
}
i++;
}
printf(\"%d\\n%d\\n\",temp1,temp2);
}

2006-08-06 10:31:21 · 3 個解答 · 發問者 jason 1 in 電腦與網際網路 程式設計

上面的 total=temp;
要改成 total=total+temp;
我少打一個total

2006-08-06 10:36:36 · update #1

我這個其實是要表示第一個陣列跟其他三個陣列都相乘到,以此類推,然後取出值最大的,我這個方法是要找出這幾個陣列的相似度,只要同一位子的值相乘等於一,就表示這兩個陣列相乘值加一,加到兩陣列乘完,
然後印出最相似的那兩個陣列。

2006-08-06 23:13:08 · update #2

3 個解答

1. max 沒初值
2. 最後加上 return 0;
3. 矩陣內積乘法是:[i][k] * [k][j]
4. tmp = a * b; total += tmp 是好正確的加速寫法,但,total 每次都要歸 0
5. for j 應為 for (j=0; j<5 或 4; j++)
6. while (i>4) 完全不對,不會說
7. 內積要 A[x][y] * B[y][z],你只有 B[y][z],不能做 B[y][z] * B[y][z] 因為你 y != z
8. 其它:還有不少,見下列改好的內積求最大值程式。

include
int main()
{ int A[3][4]={{1,2,3,4},{3,4,5,6},{4,5,6,7}},
B[4][5]={{0,0,0,1,1},{1,1,0,1,0},{1,1,0,0,0},{1,0,1,1,1}};
int i, j, k, total, temp, row, col, max;

max= -32767;
for (i=0; i<3; i++)
{ for (j=0; j<5; j++)
{ for (total=k=0; k<4; k++)
{ temp = A[i][k] * B[k][j];
total += temp;
}
if (total > max)
max = total, row = i, col = j;
} }
printf("Max: %d is at row %d, column %d\n", max, row, col);
return 0;
}

加油! ^_^

2006-08-06 22:07:10 補充:
你要的如果不是矩陣內積、甚至不是矩陣乘法,請說明你的〝陣列相乘〞的定義。

2006-08-07 19:54:23 補充:
#include int main(){ int B[4][5] = { {0,0,0,1,1}, {1,1,0,1,0}, {1,1,0,0,0}, {1,0,1,1,1} };int i, j, k, t, t1, t2, max=-32767;for (i=0; i<3; i++)for (j=i+1; j<4; j++){ for (t=k=0; k<5; k++) t += B[i][k] && B[j][k];if (t>max) max=t, t1=i, t2=j;}

2006-08-07 19:55:20 補充:
printf("%dth and %dth are most similiar, %d of them are identical.\n", t1, t2, max);return 0;}不好意思,弄錯您要的程式。希望這是您要的。

2006-08-10 01:56:58 補充:
To ASD:
被你看到我多次作答有錯!
想說:以後一定要小心點,別再出錯了!
沒想到又錯一次,還再被你看到!:D

2006-08-06 18:04:44 · answer #1 · answered by ? 7 · 0 0

你的陣列是第一列*第二列算值,然後第2列*第3列算值,依此類推嗎?(列就是橫的來看。)

2006-08-07 19:58:39 補充:
^^....Jacob你終於寫對了,我本來想要po的說,唉~~~

2006-08-06 12:38:49 · answer #2 · answered by Almond 6 · 0 0

C 的陣列不是由 0 開始的嗎? 所以應該有 5X6 = 30 個元素, 你的 CODE 裡面只有 4X5=20個元素而已...

2006-08-06 12:25:12 · answer #3 · answered by 蚊子 3 · 0 0

fedest.com, questions and answers