試験の成績0~100点の範囲の整数を読み込む関数inputDataを作り、平均点を書き出すプログラムを作りなさい。入力の終端では関数 inputDataは-1を戻すことにします。
入力部分を関数に分ける目的は関数が戻す値を終了時の-1と正常な点数0~100に制限し、main関数側では平均値計算に専念できる様にすることです。
#include<stdio.h>
/*
inputData関数の仕様
戻り値:
1)0~100の数値が入力されたらその値を戻す
2)入力が数値に変換できない場合は-1を戻し、入力の終端を知らせる
例外:
範囲外の数値が入力されたら警告をだし再度入力を繰り返す。
(上記1,2の何れかが成立するまで関数にとどまり処理を繰り返す)
*/
int inputData(void)
{
・・・・
}
int main(void)
{
double total;
int count,point;
while(1){
point=inputData();
if(point==-1)break;
total=total+point;
count++;
}
if(count==0)printf("データが無いので平均点は計算できません");
else printf("平均点=%3.1f\n",total/count);
return 0;
}
上記のプログラムの・・・・のとこを考えなければならないのですが自分は下記のように
考えたのですが上手くいきません。どうかご教授願えないでしょうか
int i,n;
while(1){
printf("データを入力してください");
i=scanf("%d",&n);
if(i==1&&0<=n&&n<=100)
{
return n;
break;
}
else if(scanf("%d",&n)!=1)
{
return -1;
break;
}
else
{
printf("もう一度入力してください");
}
宿題なのですが
Re:宿題なのですが
もしどうしてもわからなければ以下をご覧下さい。
ちなみにreturnは行うとその時点で関数を抜け、main関数に処理が戻りますからbreak以下はおこなわれません。
ですからreturnの後に何かかいてもしかたないので、消しましょう。
ちなみにreturnは行うとその時点で関数を抜け、main関数に処理が戻りますからbreak以下はおこなわれません。
ですからreturnの後に何かかいてもしかたないので、消しましょう。
#include<stdio.h> /* inputData関数の仕様 戻り値: 1)0~100の数値が入力されたらその値を戻す 2)入力が数値に変換できない場合は-1を戻し、入力の終端を知らせる 例外: 範囲外の数値が入力されたら警告をだし再度入力を繰り返す。 (上記1,2の何れかが成立するまで関数にとどまり処理を繰り返す) */ int inputData(void){ int i,n; while(1){ printf("データを入力してください\n"); i=scanf("%d",&n); if(i==1&&0<=n&&n<=100) return n; else if(i!=1) return -1; else printf("もう一度入力してください"); } } int main(void) { double total; int count,point; while(1){ point=inputData(); if(point==-1) break; total=total+point; count++; } if(count==0) printf("データが無いので平均点は計算できません"); else printf("平均点=%3.1f\n",total/count); return 0; }