
三角形を判定するプログラムを作ったのですが直角三角形ができるはずがないのに直角三角形の判定が出てしまいます。簡単なことなのかもしれませんが自分ではわからなくなってしまったのでご指摘してもらいたいです。
#include<stdio.h>
void tri(int x,int y,int z)
{
if((x*x==y*y+z*z)||(y*y==x*x+z*z)||(z*z==x*x+y*y))
{
printf("これは直角三角形です。");
printf("これは三角形です。");
}else if((x+y>=z)||(x+z>=y)||(y+z>=x))
{
printf("これは三角形ではありません。");
}else{
printf("これは三角形です。");
}
}
int main(void)
{
int e1,e2,e3;
printf("3辺を入力してください");
scanf("%f,%f,%f",&e1,&e2,&e3);
tri(e1,e2,e3);
return(0);
}
No.2ベストアンサー
- 回答日時:
scanf("%f,%f,%f",&e1,&e2,&e3); ではなく、
scanf("%d,%d,%d",&e1,&e2,&e3); です。
if((x+y>=z)||(x+z>=y)||(y+z>=x)) この判定は間違っています。
x=10,y=10,z=10 で考えてみましょう。
(x+y>=z) は(20>=10) になり、成立しますね。でもこれは三角形です。
No.3
- 回答日時:
まぁ、既にツッコミされていますが……。
どういう入力をして、どうなったんでしょうか?
int型とfloat型では格納されるビットパターンが異なるんじゃないですかねぇ…。
# int型の領域にfloat型として書き込もうとするので…バッファオーバーランしているんじゃないですかね…。
# e1かe3の前後どっちか破壊しているかと思われます。
>scanf("%f,%f,%f",&e1,&e2,&e3);
>tri(e1,e2,e3);
tri()呼び出しの前にそれぞれの変数の内容を表示して、入力した値と合っているか確認してみてはどうでしょう。
scanf("%f,%f,%f",&e1,&e2,&e3);
printf("e1=%d,e2=%d,e3=%d\n", e1, e2, e3);
tri(e1,e2,e3);
みたいな。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# プログラミングペーパーテスト 次の問題の実行結果を答えろ #include int x[ ] = { 1 2022/06/16 21:49
- C言語・C++・C# プログラミングの授業のペーパーテスト 実行結果を答えろ #include int x[ ] = {1 3 2022/06/16 20:08
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# プログラムの時、フローチャートはどうなりますか?図でお願いします。 int main(void) { 1 2022/10/01 22:45
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
分数を表示するプログラム(長...
-
defineで定数が置き換えられな...
-
覆面算 C
-
printf( " %2d", p * q );
-
勝率をプログラムに
-
C言語で、「自然数nを入力し、n...
-
strcmp
-
LU分解法のピボット選択機能実...
-
visualstudio C# テキストボッ...
-
C言語での引数の省略方法
-
C言語のプログラミングですが、
-
複数桁10進数の*桁目だけを抽出...
-
単語数のカウントについて
-
正負を反転させて出力するプロ...
-
EDITコントロールで入力できる...
-
ポインタの入出力演算子?[C++]
-
根号内が負になり、エクセルで...
-
マチンの公式による円周率のプ...
-
エクセルで可視セルにのみ値貼...
-
信頼区間の1.96や1.65ってどこ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コンパイルエラーについて
-
printf で二進表示を行いたい。
-
【C言語教えてください】sin波...
-
c言語でAからZまでを表示する...
-
コマンドラインに出力した文字...
-
strcmp
-
cshの文字列操作(0埋め)
-
printfの出力内の文字をdefine...
-
テキストカーソル位置の取得
-
アドレスの比較について
-
コマンドプロンプトがすぐ消える
-
Visual Sutdio 2017 でのC言語...
-
defineで定数が置き換えられな...
-
10個出力で改行したいのですが...
-
ifなんですが
-
c言語で2000年以降カレンダーを...
-
WM_CLOSEで閉じれないウィンド...
-
%P と %X の違い
-
Cプログラムについて
-
三角形の判別
おすすめ情報