/*
超初心者です
下記問題文の解答例で理解出来ない箇所があり教えていただきたいです。
お願いします
<問題文>
0~100の範囲で入力された複数の数値の中から、
最大値と最小値を求めて表示するプログラムを作成せよ。
-1が入力された場合は入力の終わりと判定する。
ただし、最大値と最小値はmain関数以外の一つの関数の中で求める。
また、入力された数値を記憶する配列の要素数は10とし、
それ以上入力された場合はエラーが起きても仕方ないこととする。
ヒント:配列の中に -1 があればデータの終わりだと判断できる。
ヒント:最小値を探すには、最大値を記憶した変数との比較を繰り返せば良い。
で解答例が下記のコードなのですが*/
#include <stdio.h>
void maxmin(int array[],int *max,int *min);
int main(void)
{
int i=0,array[10],max,min;
do{
printf("%d番目の数:",i + 1);
scanf("%d",&array[i]);
i++;
}while(array[i-1] != -1);
maxmin(array,&max,&min);
printf("最大値 %d : 最小値 %d\n",max,min);
return 0;
}
void maxmin(int array[],int *max,int *min)
{
int i=0;
*max=0;
*min=100;
while(array[i] != -1){
if(array[i] > *max) *max = array[i];
if(array[i] < *min) *min = array[i];
i++;
}
}
/*
mainの while(array[i-1] != -1);の[i-1] ここで何故-1が必要なのか分かりません。
下段ブロック内の while(array[i] != -1)では[i-1]ではなく[i]で問題ない所を見ると
-1を省略してもよさそうとも思えるのですが
そうするとプログラムを実行し-1を入力しても止まりません。
それと入力終了させるところの-1を例えば-9とか他の数値にする時に
mainを while(array[i-9] != -9);
下段ブロック内を (array[i] != -9)
と書き換えてプログラムを実行し-9を入力しても止まらないのですが何故でしょうか。
この二点をお答え頂きたいです。
出典は苦Cというサイトです。macOS10.6.6 xcode3.2.2 環境下です。
*/