先日のプログラムを作り直しました。アドバイスのおかげでエラーは減りましたが、まだ完ぺきではないようです。恐らく、elseのところがいけないと思うのですが、どうしたらいいか分かりません。
ご指摘お願いします。
#include <stdio.h>
#include <math.h>
void main(void)
{
double x ,y ,z ,error ,menseki ;
double ans;
printf("x ?"); scanf("%lf", &x);
printf("y ?"); scanf("%lf", &y);
printf("z ?"); scanf("%lf", &z);
if(x<y+z || y<x+z || z<x+y)
{
ans=(x+y+z)/2;
menseki=sqrt(ans*(ans-x)*(ans-y)*(ans-z));
}
if(x==y && y==z && z==x)
{
printf("正三角形です");
printf("面積は%lfです" , menseki);
}
else if(x==y || y==z || z==x)
{
printf("二等辺三角形です");
printf("面積は%lfです" , menseki);
}
else
{
printf("三角形です");
printf("面積は%lfです" , menseki);
}
else
{
printf("error");
}
}
No.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;
}
No.3
- 回答日時:
少々ネストしますが、こんな感じかと
if (二辺の計が一辺より長い) {
if (三辺が等しい) {
正三角形と表示
} else if(二辺が等しい) {
二等辺三角形と表示
} else {
三角形と表示
}
面積計算
面積を表示
} else {
エラー表示
}
あと正三角形の判断ですが、(x==y && y==z) で必要十分です。
No.2
- 回答日時:
最後の 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;
}
とかにしてしまいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# C言語(構造体) 3 2022/07/05 20:08
- C言語・C++・C# LU分解法のピボッティングについて(C言語/gcc-9) 3 2022/07/11 23:10
- C言語・C++・C# LU分解法のピボット選択機能実装について(C言語・gcc-9) 1 2022/07/22 15:20
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
10個出力で改行したいのですが...
-
strcmp
-
CTRL+Dでループを抜けるには
-
4の倍数を論理演算で表す。。
-
【C言語教えてください】sin波...
-
scanfに文字が入力されたときに...
-
ガウスの消去法、後退代入について
-
C言語プログラミング
-
defineで定数が置き換えられな...
-
printf で二進表示を行いたい。
-
c言語でAからZまでを表示する...
-
分数を表示するプログラム(長...
-
switch分のケースを範囲数?に...
-
カレンダーのプログラムについて
-
C言語初心者です。次の問題で質...
-
C言語です
-
じゃんけんゲームの応用
-
BMI値から体型を判定するプログ...
-
(C言語)めちゃくちゃな値にな...
-
なぜgccはstdio.hをインクルー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語について
-
printf で二進表示を行いたい。
-
cshの文字列操作(0埋め)
-
10個出力で改行したいのですが...
-
コンパイルエラーについて
-
テキストカーソル位置の取得
-
strcmp
-
unsigned int型について
-
c言語でAからZまでを表示する...
-
printf( " %2d", p * q );
-
コマンドラインに出力した文字...
-
printfの出力内の文字をdefine...
-
ホームページをC言語で作りたい...
-
コマンドプロンプトがすぐ消える
-
小数点切捨て表示
-
【C言語教えてください】sin波...
-
switch分のケースを範囲数?に...
-
二つの整数値の大小比較
-
4の倍数を論理演算で表す。。
-
defineで定数が置き換えられな...
おすすめ情報