R55 0,30
考察
動作しない。前に動作しなかった時と同じような問題が生じていると思う。早めに質問して解決しないとどんどんたまるな。いかんいかん。
問題
キーボードから縦、横の長さを入力し、入力した数値のチェック(1~100ならOK)を行
う。面積の計算を行い、表示する。入力にはinput()関数、チェックにはcheck()関数、面積
の計算にはkeisan()関数を利用する。数値はすべて整数型とする。
表示例
-------長方形の面積を求める関数-------
縦の長さを入力してください---->125
Error 1~100の範囲ではありません。
縦の長さを入力してください---->15
横の長さを入力してください---->20
長方形の面積------------------>300
--------------------------------------
考え方
(1)最小値、最大値の定数定義
#define MIN 1 ← 定数1にMINという名前を付ける。
#define MAX 100 ← 定数100にMAXという名前を付ける。
(2)利用する関数
int input(char *s); ← 入力用関数
int check(int ); ← チェック用関数
int keisan(int ,int ); ← 面積計算用関数
(3)メイン関数(main)
①メッセージの宣言(表示には次のmsg1からmsg5を使用すること)
char msg1="-------長方形の面積を求める関数-------";
char msg2="縦の長さを入力してください---->";
char msg3="横の長さを入力してください---->";
char msg4="長方形の面積------------------>";
char msg5="--------------------------------------";
②msg1の表示
③縦の長さの入力
入力用関数(input)にmsg2を渡し(引数とし)、戻り値として縦の長さ(tate)を受け取る。
tate = input(msg2);
④横の長さの入力
入力用関数にmsg3を渡し、戻り値として横の長さ(yoko)を受け取る。
⑤面積の計算
計算用関数(keisan)に縦の長さ、横の長さを渡し、面積(menseki)を受け取る。
menseki = keisan(tate,yoko);
⑥面積の表示
msg4と面積を表示する。
⑦msg5を表示する。
(4)入力用関数(input)
①仮引数であるメッセージ(msg)を表示し、長さ (nagasa)入力をする。
②チェック用関数に長さを渡し、結果(kekka)を受け取る。
kekka=check(nagasa);
③結果が0でないときは"Error 1~100の範囲ではありません。"の表示を行い、
①から③を繰り返す。(do while使用)
④長さを戻り値とし、呼び出し関数(main)へ戻す。
(5)チェック用関数(check)
①仮引数としてxを受け取る。
②xがMIN以上でMAX以下の時0を戻り値とする。
③そうでない時は1を戻り値とする。
(6)面積計算用関数(keisan)
①仮引数としてxとyを受け取る。
②x×yを戻り値とする。
#include
#define MIN 1
#define MAX 100
int input(char *s);
int check(int);
int keisan(int, int);
int main()
{
char msg1 = "長方形の面積を求める関数";
char msg2 = "縦の長さを入力してください";
char msg3 = "横の長さを入力してください";
char msg4 = "長方形の面積";
char msg5 = "---------------------";
int tate, yoko, menseki;
printf("%s\n", msg1);
tate = input(msg2);
yoko = input(msg3);
menseki = keisan(tate, yoko);
printf("%s%d\n", msg4, menseki);
printf("%s\n", msg5);
return 0;
}
int input(char *msg)
{
int nagasa, kekka;
do
{
printf("%s", msg);
scanf("%d", &nagasa);
kekka=check(nagasa);
if(kekka != 0)
{
printf("Error 1~100の範囲ではありません。\n");
}
}while(kekka != 0);
return nagasa;
}
int check(int x)
{
if(x >= MIN && x <= MAX)
{
return 0;
}
else
{
return 1;
}
}
int keisan(int x, int y)
{
return(x * y);
#define MIN 1
#define MAX 100
int input(char *s);
int check(int);
int keisan(int, int);
int main()
{
char msg1 = "長方形の面積を求める関数";
char msg2 = "縦の長さを入力してください";
char msg3 = "横の長さを入力してください";
char msg4 = "長方形の面積";
char msg5 = "---------------------";
int tate, yoko, menseki;
printf("%s\n", msg1);
tate = input(msg2);
yoko = input(msg3);
menseki = keisan(tate, yoko);
printf("%s%d\n", msg4, menseki);
printf("%s\n", msg5);
return 0;
}
int input(char *msg)
{
int nagasa, kekka;
do
{
printf("%s", msg);
scanf("%d", &nagasa);
kekka=check(nagasa);
if(kekka != 0)
{
printf("Error 1~100の範囲ではありません。\n");
}
}while(kekka != 0);
return nagasa;
}
int check(int x)
{
if(x >= MIN && x <= MAX)
{
return 0;
}
else
{
return 1;
}
}
int keisan(int x, int y)
{
return(x * y);
}