所以我想創建一個矩陣的一般形式,當2N = 6樣子(6×6)陣列間斷
1 0 0 -1/1! 0 0
0 1 0 -1/1! -1/1! 0
0 0 1 -1/2! -1/1! -1/1!
0 0 0 -1/3! -1/2! -1/1!
0 0 0 -1/4! -1/3! -1/2!
0 0 0 -1/5! -1/4! -1/3!
也就是說一個N = 3給出了與
一個6x6的矩陣 TL象限中的標識
BL列中的象限
和列中的從0到N-1的-1 /因子,向下移動1。
我試圖儘可能地做到這一點。到目前爲止,我有:
#include <stdio.h>
#include <math.h>
int main()
{
int A, B, C, R, M;
int i, j, N;
double n,r,c,rf,x;
N=3;
n=N;
M=(N+N-1);
double a[(2*N)][(2*N)];
for(A=0; A<N; A++)
{a[A][A]=1.0;
}
for(C=N; C<=M;C++)
{
for(R=(C-N);R<=(M);R++)
{
r=R-(C-N);
rf=1;
for(x=1; x<=r; x++)
{
rf=rf*x;
}
a[R][C]=((-1)/rf);
}
}
for (i = 0; i < 2*N; i++)
{
for (j = 0; j < 2*N; j++)
{
printf(" %f ", a[i][j]);
if (j % 3 == 2) printf(" ");
}
printf("\n");
}
/*
for(i=0;i<=M;i++)
{
for(j=0;j<=M;j++)
{
printf("[%d][%d] = %f \n", i, j,a[i][j]);
}
}
*/
return 0;
}
我已經包括(但註釋掉)一個單獨的元素打印出來。這適用於N = 3,但是當嘗試增加N的值時,我遇到了一些非常奇怪的結果,並且無法弄清楚爲什麼,任何人都可以幫忙? (例如N = 4,a [2] [0]會變成一個巨大的數字),因爲它沒有編譯和運行的「調試錯誤」。不要讓人們去調試,但是想知道我缺少的是數組的一般屬性嗎?
感謝
你遇到什麼奇怪的結果?您是否嘗試過使用調試器來遍歷代碼? –
要求人們發現代碼中的錯誤並不是特別有效。您應該使用調試器(或者添加打印語句)來分析問題,追蹤程序的進度,並將其與預期發生的情況進行比較。只要兩者發生分歧,那麼你就發現了你的問題。 (然後,如果有必要,你應該構建一個[最小測試用例](http://sscce.org)。) –
*沒有「調試錯誤」,因爲它編譯和運行* - 我不認爲你理解「調試」一詞的含義。 –