宿題なのですが
Posted: 2007年1月25日(木) 01:51
試験の成績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("もう一度入力してください");
}
入力部分を関数に分ける目的は関数が戻す値を終了時の-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("もう一度入力してください");
}