for (x=1; x<=4; x++){
slope = ((x+1)-(x))/(a[x+1] - a[x]);
printf("Slope: %d \n", slope);
}
所以,是的。這是一個家庭作業問題。我試圖將數組a = {1, 2, 3, 4}
的每個元素與每個其他元素進行比較並找出斜率。 x
的值是y
的值。這是做的嗎?不應該有16個斜坡?比較陣列的元素彼此
for (x=1; x<=4; x++){
slope = ((x+1)-(x))/(a[x+1] - a[x]);
printf("Slope: %d \n", slope);
}
所以,是的。這是一個家庭作業問題。我試圖將數組a = {1, 2, 3, 4}
的每個元素與每個其他元素進行比較並找出斜率。 x
的值是y
的值。這是做的嗎?不應該有16個斜坡?比較陣列的元素彼此
提示:
C中的數組是從零開始的。您正在從[1]循環到[4],並且應該從[0]循環到[3]。您的代碼將導致數組越界錯誤。
查看嵌套循環。
注意'a [x + 1]'so'x <4'仍然會導致出界。 – hmjd 2012-03-06 21:52:39
不,實際上,它會產生4個斜坡。我認爲我需要16,因爲我比較每個元素與其他元素。 – user1079940 2012-03-06 21:53:57
那麼你說你的數組有4個元素,如果是這樣,那麼循環的第四次迭代將導致訪問[4],並且在4元素數組中沒有[4]。 – 2012-03-06 21:56:12
要比較數組中的每個元素與其他元素,需要2個嵌套循環。假設陣列A
具有長度n
,每個元素比較所有其他元素,如下:
int A[] = {0, 1, 2, 3};
unsigned int n=sizeof(A)/sizeof(int);
int i,j;
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
if(i != j)
printf("Slope is %d\n",(i-j)/(A[i]-A[j]);
}
}
輸出:
Slope is 1
Slope is 1
Slope is 1
Slope is 1
Slope is 1
Slope is 1
Slope is 1
Slope is 1
Slope is 1
Slope is 1
Slope is 1
Slope is 1
的原因if(i != j)
是因爲你不能計算2之間的斜率相同的點,這發生在i==j
。
此外,如上所述,陣列是0-indexed
,這意味着您應該訪問從A[0]
到A[n-1]
的元素,如上面我的循環所示。
哈哈我試圖給他提示,而不是發佈代碼,因爲這是一個自我承認的家庭作業。 :) – 2012-03-06 21:57:42
@CFL_Jeff - 還有很多工作要做! ;) – prelic 2012-03-06 21:58:42
@prelic那麼,這裏,A [i]其實是我的索引和A [j]我的值? – user1079940 2012-03-06 22:01:46
請更正您的問題。你提到'Ys',但在代碼中沒有'Y'。你計算'slope',但打印'v'。不要讓我們猜你是什麼意思。 – 2012-03-06 22:00:07
@SteveFallows - 我試圖找出每個元素對每個其他元素的斜率。我的X值是我的數組值,而我的Y值是我的數組索引 – user1079940 2012-03-06 22:12:19
但是在您的代碼中,您使用x作爲數組索引。並且'(x + 1) - (x)'將始終等於1.所以我仍然很難將您的代碼與您所說的嘗試進行關聯。 – 2012-03-06 22:41:57