金額変数の名前はhighestIndexの方が適切です
あなたのコードを修正するために、私はあなたがするかもしれない2つのことを見ることができます:
1)。現在のコードが何をしているのかを理解します。「デスクチェック」をお試しください。紙の上で(またはあなたの心の中で)この関数へのいくつかの入力を発明します。
numbers = [ 2, 17, 4, 10]; amount = 3;
i = 1, is 1 <=3 ? yes, OK go into the body
diff = numbers[3] - numbers[1] which is 10 - 17, so diff is now -7
increment i, i = 2, is 2 <=3 ? yes, OK go into the body
diff = numbers[3] - numbers[2] which is 10 - 4, so diff is now 6
increment i, i = 3, is 3 <=3 ? yes, OK go into the body
diff = numbers[3] - numbers[2] which is 10 - 10, so diff is now 0
increment i, i = 4, is 3 <=3 ? no. so leave the loop
print diff ... hmmm it's 0 at the moment
ここでの秘訣は、小さなサンプルセットを選び、処理が理にかなっているかどうかを確認することです。明らかに、入力配列がソートされていない限り、これは範囲を見つけることができませんが、ループが必要な場合は、numbers[highestIndex]とnumbers[0]を減算するだけです。
2)。今、あなたは何をする必要がありますか?範囲は、リスト内の最大数と最小数の差です。したがって、コードはリストを調べて、最大数と最小数を見つける必要があります。このように始めてみてください
候補の値を初期化します。リストにメンバーが1つしかない場合はこれが正しいことに注意してください。その場合、最大値と最小値は同じで、リスト内の唯一の値です。
float biggest = numbers[0];
float smallest = numbers[0];
次に、ループして、他の数値のいずれかが現在の最大および最小よりも大きいか小さいかを確認します。
for ( int i = 1; i <= highestIndex; i++ ) {
is numbers[i] bigger than biggest
set new biggest value
do the same sort of thing for smallest
}
print biggest - smallest
次に、すべての数値が負の場合に何が起こるか、特別な場合に何が起こるかを確認するために、フロートが保持できる値について読んでください。