• ベストアンサー

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

タイトルの通りなんですがエラーがでます>< コンパイラはできたのですが、実行して二つ目の入力するとこで、入力したあと止まります。 どこがおかしいのでしょうか? #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; }

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

  • ベストアンサー
noname#119918
noname#119918
回答No.4

#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; }

M_icrosoft
質問者

お礼

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

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.5

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

M_icrosoft
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.3

> f ではなく b でしょうか。 何故? > float f; って書いてますけど。

すると、全ての回答が全文表示されます。
  • auty
  • ベストアンサー率58% (284/486)
回答No.2

scanf("%f",f); printf("%fです",a * a * f); f ではなく b でしょうか。

すると、全ての回答が全文表示されます。
  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

> コンパイラはできたのですが コンパイルができた、です。コンパイルをするためのソフトウェアが、コンパイラです。 > scanf("%d ",a); scanf()の第2引数は、アドレスです。 > printf("%dです",a * b); 三角形の面積を求める式が正しくありません。 > printf("dです",a * b); 長方形の面積を出力する際の書式文字列が正しくありません。 それから、en()とsikaku()の戻り値の意味は何ですか? どこでも利用していませんので、とりたててint型にする必要はありません。

M_icrosoft
質問者

お礼

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

すると、全ての回答が全文表示されます。

専門家に質問してみよう