- ベストアンサー
C言語のプログラミングがうまくいかない!エラーは減ったけど完璧ではない
- C言語のプログラミングが上手くいかない問題に直面しています。先日プログラムを作り直しましたが、まだ完璧ではないようです。特にelseの部分に問題があるのかもしれません。アドバイスをいただけると助かります。
- C言語のプログラミングが上手くいかない問題に直面しています。プログラムを作り直しましたが、まだ問題が残っています。特にelseの部分が間違っている可能性があります。どう修正すれば良いかアドバイスをお願いします。
- C言語のプログラミングが上手くいかない問題に直面しています。以前のプログラムを修正しましたが、まだ完全には解決していません。おそらく、elseの部分に誤りがあるようです。助言があれば教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
エラーの場合を先に書くのが、私の好みです。 押しつけるつもりは全くありません。 あくまで参考です。 #include <stdio.h> #include <math.h> int main(void) { double x, y, z, s; printf("x ? "), scanf("%lf", &x); printf("y ? "), scanf("%lf", &y); printf("z ? "), scanf("%lf", &z); if (x <= 0 || y <= 0 || z <= 0 || x + y <= z || y + z <= x || z + x <= y) { printf("三角形にならない\n"); } else { if (x == y && y == z) { printf("正三角形\n"); } else if (x == y || y == z || z == x) { printf("二等辺三角形\n"); } else { printf("その他の三角形\n"); } s = (x + y + z) / 2; printf("面積は%f\n", sqrt(s * (s - x) * (s - y) * (s - z))); } return 0; }
その他の回答 (3)
- Ogre7077
- ベストアンサー率65% (170/258)
少々ネストしますが、こんな感じかと if (二辺の計が一辺より長い) { if (三辺が等しい) { 正三角形と表示 } else if(二辺が等しい) { 二等辺三角形と表示 } else { 三角形と表示 } 面積計算 面積を表示 } else { エラー表示 } あと正三角形の判断ですが、(x==y && y==z) で必要十分です。
- 中村 拓男(@tknakamuri)
- ベストアンサー率35% (674/1896)
最後の else はコンパイルエラーになるでしょうね。 この else って最初の if の else 部分だと思いますので、 そのようにかかないと駄目でしょう。 私なら if(x<y+z || y<x+z || z<x+y) { ans=(x+y+z)/2; menseki=sqrt(ans*(ans-x)*(ans-y)*(ans-z)); } else { printf("三角形になってません!\n"); return 1; } とかにしてしまいます。
- tsunji
- ベストアンサー率20% (196/958)
コンパイルすら通らないと思うんだけど。 if~elseのペアを再確認しる。