2012-03-06 13 views
0
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の斜面はありませんか?配列の要素を互いに比較する

+0

質問を修正してください。あなたは 'Y 'を言いますが、コードに' Y'はありません。 'slope'を計算して' v'を出力します。あなたが本当に意味することを私たちに推測させてはいけません。 –

+0

@SteveFallows - 他のすべての要素に対して各要素の傾きを見つけようとしています。私のX値は配列値であり、私のY値は配列インデックスです – user1079940

+0

しかし、コードでは配列インデックスとしてxを使用しています。そして、 '(x + 1) - (x)'は常に1になります。あなたのコードとあなたがしようとしていることを関連づけるのは難しいです。 –

答えて

3

ヒント:

Cの配列はゼロベースです。あなたは[1]から[4]にループしており、[0]から[3]にループしているはずです。あなたのコードは、配列外のエラーになります。

ネストループを調べます。

+4

注意 'a [x + 1]'だから 'x <4'はまだ境界外になります。 – hmjd

+0

いいえ、実際には、4つの斜面を作ります。私はすべての要素を他のすべての要素と比較しているので、私は16が必要だと思う。 – user1079940

+0

あなたの配列には4つの要素があり、そうであればループの4番目の反復で[4]がアクセスされ、4要素配列には[4]はありません。 –

2

配列の各要素を他のすべての要素と比較するには、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]); 
    } 
} 

出力:あなたは2との間の傾きを計算することができないため

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)理由は、同じポイントは、i==jの場合に発生します。

また、前述のように配列は0-indexedです。つまり、上記のループで示すように、A[0]からA[n-1]までの要素にアクセスする必要があります。

+0

母私は自己承認された宿題であるので、私は彼にコードを掲示する代わりにヒントを与えようとしていました。 :) –

+1

@CFL_Jeff - まだ多くの作業が残っています! ;) – prelic

+0

@prelicここで、A [i]は実際に私のインデックスとA [j]私の値ですか? – user1079940

関連する問題