Q. m[1]からm[50]にそれぞれ数値が入っている場合に、その最大値を調べたいんですが、どのような式を作ればいいのでしょうか。 |
A.
配列のIndexは0から始まるので、配列数50で宣言した場合は、m[0]~m[49]までしか使用できません。 m[50]にアクセスした場合はクラッシュします。 初心者の頃はよく失敗してしまう部分なので注意してください。 下請けIT企業から納品されたプログラムでさえこの手の不具合が良くあります。 なぜ[49]までしか使えないかは、C言語のポインタと配列について調べて頂くと正しく理解できると思いますが、内容が難しくて理解できない場合は・・・ 単純に配列のIndexは0から始まって終端は配列数の-1だと覚えて下さい。 本題に戻りますが、以下サンプルソースを参考にしてみて下さい。 |
const int temp_m[] = { 0,1,2,3,4,9,8,7,6,5 }; // テストデータ void OnStart() int max_array = ArrayRange( temp_m , 0); // 配列数取得 int get_max_value = 0; for( int icount = 0; icount < max_array; icount++ ) { printf( "値比較[%d] %d vs %d" , icount , temp_m[icount] , get_max_value); get_max_value = MathMax( temp_m[icount] , get_max_value); // 最大値取得 } printf( "最大値 = %d" , get_max_value); } // 実行結果 // 値比較[0] 0 vs 0 // 値比較[1] 1 vs 0 // 値比較[2] 2 vs 1 // 値比較[3] 3 vs 2 // 値比較[4] 4 vs 3 // 値比較[5] 9 vs 4 // 値比較[6] 8 vs 9 // 値比較[7] 7 vs 9 // 値比較[8] 6 vs 9 // 値比較[9] 5 vs 9 // 最大値 = 9