60日間全力プログラミング

プログラミング初心者が二ヶ月間でどこまでいけるかを記録したプログラミング学習ブログ

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 1100の範囲ではありません。\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);
}