0

I have an array of integers and I'm trying to find which one is the highest and set a new integer to the highest ones value. I'm very new to C, I literally just started learning it.

There is probably some kind of logical problem with what I'm doing but I haven't been able to spot it yet. so...

int my_array[4];
int highest_int = 0;
int i;

for (i = 0; i < 4; i++) {
    if (my_array[i] > my_array[i++]) {
        if (my_array[i] > highest_int) {
            highest_int = my_array[i];
        }
    }
    else {
        if (my_array[i++] > highest_int) {
            highest_int = my_array[i++]
        }
    }
}

So I loop through my array 4 times (4 elements) and I look at the iteration value and the next one and if the iteration value is highest I check it's also higher than the current value of the current 'highest integer' and if it is I set the current highest integer to the new highest value. If the value after the iteration value is higher I do the same thing but with that value instead.

That's what went through my head when I wrote this but when I enter 4 values it always comes out with the 3rd value in the array. No matter what I set those values to.

Can anyone tell me why?

Thanks a lot.

4

3 に答える 3

6

iループ内でインクリメントするのはなぜですか? なぜelse部分が必要なのですか?

簡単な方法は次のとおりです。

int my_array[4];
int highest_int = my_array[0];
int i;

for (i = 1; i < 4; i++) {
        if (my_array[i] > highest_int) {
            highest_int = my_array[i];
        }
    }
于 2012-10-31T20:14:19.710 に答える
3

あなたはこの方法を実際よりも複雑にしています:)さらに、あなたはi++あまりにも多くの場所に書いています。実行されるたびi++に、配列エントリをスキップしていますが、これはおそらくあなたが望むものではありません。

また、以前の値と比較する必要はありません。これまでに見た最高のものと比較してください。

コードを削除しただけで、何も変更も追加もされていない修正バージョンを次に示します。

int my_array[4];
int highest_int = 0;
int i;

for (i = 0; i < 4; i++) {
    if (my_array[i] > highest_int) {
        highest_int = my_array[i];
    }
}

配列内のすべての数値が負の場合、これは誤って 0 を報告することに注意してください。highest_int = INT_MINそれらを正しく処理する必要がある場合に備えて開始するか、 unsigned int.

于 2012-10-31T20:15:15.627 に答える
2

最大数を見つけようとしている場合は、次のコードを使用します。

int my_array[4];
int highest_int = my_array[0]; 
//Before entering the loop, assuming the first number to  highest
int i;

for (i = 1; i < 4; i++) {
    if (my_array[i] > highest_int) {  //Compare every number with highest number
        highest_int = my_array[i];
    }  
}

//Now we have the highest number
printf("Highest Number: %d",highest_int);
于 2012-10-31T20:16:21.940 に答える