前提・実現したいこと
0~100の整数を10個入力して、最大値と最小値を求めて表示するプログラムをかきたいです。ただし、-1が入力されると処理を中止する、最大値最小値を求める関数は一つにしてmain以外でつくる、という制約のもとです。
発生している問題・エラーメッセージ
実行すると11番目の数と表示されるのと、11回以上の入力を受け付けるという問題。エラーメッセージは出ていません。
該当のソースコード
C
1#include<stdio.h> 2 3void maxmin(int data[], int *max, int *min); 4 5int main(void){ 6 int i=0; 7 int data[10]; 8 int max, min=0; 9 10 for(i=0; i<10; i++){data[i]=0;} 11 do{ 12 printf("%d番目の数:", i+1); 13 scanf("%d", &data[i]); 14 i++; 15 }while(data[i-1]!=-1 || i<10); 16 17 maxmin(data, &max, &min); 18 19 20 return 0; 21} 22 23void maxmin(int data[], int *max, int *min){ 24 25 int i=0; 26 *max=0; 27 *min=100; 28 29 while(data[i]!=-1){ 30 if(data[i]>*max) *max=data[i]; 31 if(data[i]<*min) *min=data[i]; 32 i++; 33 } 34}
試したこと
何分エラーが出てないもんですから、手出しできませんでした。。。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
「-1が入力されると処理を中止する」とありますが、コードの動作は、「-1が入力されると入力を終了する」になっています。どちらをやりたいのでしょうか?
入力を終了したかったです。。僕の書き方だとどっちか分からないですね、ご指摘ありがとうございます。
回答4件
あなたの回答
tips
プレビュー