みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

長方形、円、三角形の計算するプログラムでエラーがでます

タイトルの通りなんですがエラーがでます><
コンパイラはできたのですが、実行して二つ目の入力するとこで、入力したあと止まります。
どこがおかしいのでしょうか?
#include <stdio.h>
int sikaku(void); int en(void);

int main(void)
{
char ch;
int a,b;

printf("円(A) 長方形(B) 三角形(C)\n");
printf("入力してください:");
ch = getche();

if(ch == 'C'){
printf("\n底辺を入力してください:");
scanf("%d ",a);
printf("高さを入力してください:\n");
scanf("%d",b);
printf("%dです",a * b);
}
else if(ch == 'B')
sikaku();
else if(ch == 'A')
en();
return 0;
}

int en(void)
{
int a;
float f;
printf("\n半径を入力してください:");
scanf("%d",a);
printf("円周率を入力してください:");
scanf("%f",f);
printf("%fです",a * a * f);
return 0;
}

int sikaku(void)
{
int a,b;

printf("\n縦を入力してください:");
scanf("%d",a);
printf("横を入力してくさい:\n");
scanf("%d",b);
printf("dです",a * b);
return 0;
}

投稿日時 - 2008-06-27 23:15:42

QNo.4134328

困ってます

質問者が選んだベストアンサー

#include <stdio.h>
int sikaku(void);
int en(void);

int main(void)
{
char ch;
int a,b;

printf("円(A) 長方形(B) 三角形(C)\n");
printf("入力してください:");
ch = getchar(); // getche()という関数は標準にはありません。

if(ch == 'C'){
printf("\n底辺を入力してください:");
scanf("%d", &a); // 引数は、aではなく、&aにすべきです。
printf("高さを入力してください:\n");
scanf("%d", &b);
printf("%fです", a * b / 2.0); // 三角形ですので、2で割りましょう。
}
else if(ch == 'B')
sikaku();
else if(ch == 'A')
en();
return 0;
}

int en(void)
{
int a;
float f;
printf("\n半径を入力してください:");
scanf("%d", &a);
printf("円周率を入力してください:");
scanf("%f", &f);
printf("%fです", a * a * f);
return 0;
}

int sikaku(void)
{
int a,b;

printf("\n縦を入力してください:");
scanf("%d", &a);
printf("横を入力してくさい:\n");
scanf("%d", &b);
printf("%dです",a * b);
return 0;
}

投稿日時 - 2008-06-28 09:15:15

お礼

本当にありがとうございます><
見比べてみたらミスがたくさんありました;;
scanfで&を完璧にわすれてました・・・
助かりました

投稿日時 - 2008-06-28 14:53:12

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

getche( )を使うなら
#include <conio.h>

投稿日時 - 2008-06-28 12:00:46

お礼

ありがとうございます!
インクルードするの忘れてました・・・
助かりました

投稿日時 - 2008-06-28 14:54:06

ANo.3

> f ではなく b でしょうか。
何故?

> float f;
って書いてますけど。

投稿日時 - 2008-06-27 23:28:37

ANo.2

scanf("%f",f);
printf("%fです",a * a * f);

f ではなく b でしょうか。

投稿日時 - 2008-06-27 23:25:42

ANo.1

> コンパイラはできたのですが
コンパイルができた、です。コンパイルをするためのソフトウェアが、コンパイラです。

> scanf("%d ",a);
scanf()の第2引数は、アドレスです。

> printf("%dです",a * b);
三角形の面積を求める式が正しくありません。

> printf("dです",a * b);
長方形の面積を出力する際の書式文字列が正しくありません。

それから、en()とsikaku()の戻り値の意味は何ですか?
どこでも利用していませんので、とりたててint型にする必要はありません。

投稿日時 - 2008-06-27 23:25:25

お礼

コンパイルでした 間違えてました><
色々指摘ありがとうございます。
助かります
必要ない場合は無理にint型などにしなくていいんですね!!
勉強になりました

投稿日時 - 2008-06-28 14:58:26

あなたにオススメの質問