0~100の範囲で入力された複数の数値の中から、
最大値と最小値を求めて表示するプログラムを作成せよ。
-1が入力された場合は入力の終わりと判定する。
ただし、最大値と最小値はmain関数以外の一つの関数の中で求める。
また、入力された数値を記憶する配列の要素数は10とし、
それ以上入力された場合はエラーが起きても仕方ないこととする。
という問題に対し、
#include <stdio.h> int maxi(int*,int*); int main(void){ int o,c; maxi(&o,&c); printf("%d,%d",o,c); return 0; } void maxi(int *po,int *pc){ int max,min,i,array[10]; printf("type 10 number between 0 and 100\n"); for(i=0;i<10;i++){ scanf("%d",&array); if(array==-1){break; }else if(i==0){ max=array,min=array; }else if(array[i-1]<=array){ max=array,min=array[i-1]; } else max=array[i-1],min=array; ; printf("\n"); } po=&max,pc=&min; ; }
というコードを書いてコンパイルしたところ、どんな値を打ち込んでもでたらめな
値が最大値及び最小値として返されてしまいます。
ソースコードの問題点指摘をお願いします。
コンパイラはLSI C-86で、OSはWindows Vistaです