【解決方法】C うっとうしいエラー printf


3 つの入力数値について、それらが三角形を形成できるかどうか、および長方形であるかどうかを決定するプログラムを作成する必要があります。 私が書いた

#include <stdio.h>
int main(){
    int a , b, c;
    scanf("%d %d %d" , &a , &b , &c);
    if ((a==2) || (b==3) || (c==4))
    printf("The numbers can form a triangle.\n");
    
    else if ((a==3) || (b==4) || (c==5))
    printf("The numbers can form an rectangular triangle.\n");
    
    
    else if((a==1) || (b==1) || (c==5))
    printf("The numbers can form a triangle\n.");
    
    return 0;
}

プログラムは最初の2つの printf を出力していますが、3番目の出力では「数字は長方形の三角形を形成できます」と出力します

私が試したこと:

セミコロンで区切ってみましたが、うまくいきません

解決策 2

仮定して abc が辺の長さである場合、三角形の不等式を使用する必要があります ( 三角形の不等式 – ウィキペディア[^])それらが三角形を形成するかどうかを確立するために。
同様に、次の場合は直角三角形があります。

z^2 = x^2 + y^2

保持、どこ

z = max{a,b,c}

{x,y} 残りの長さです。

解決策 1

C++
if ((a==2) || (b==3) || (c==4))
printf("The numbers can form a triangle.\n");

上記のコードでは、a が 2 の場合、b と c の値に関係なく、メッセージを出力します。 すべての値が等しいことをテストする必要があるため、a AND b AND c となります。

C++
if ((a==2) && (b==3) && (c==4))
    printf("The numbers can form a triangle.\n");

大きな値を減らして、ここで使用している比率と同じ比率になっているかどうかを確認する必要もあります。 例えば [4, 6, 8]、 [12, 16, 20] 等

解決策 3

ここでは、直角三角形 (ピタゴラスの定理) になる可能性のある定数をとりわけ実装します。 ただし、質問は任意の三角形に言及しています。 3 つの長さの指定から長方形がどのように生成されるかは明確ではありません。 ここで、長方形ではなく直角三角形を意味する可能性はありますか? 2 つの等しい直角三角形から、長方形を作成することもできます。

パリーニがすでに示唆したように、任意の三角形に対して三角形の不等式が使用可能であり、それがさらに直角であるかどうかを確認するには、後でピタゴラスの定理が役立ちます。

三角形の不等式によると、三角形の最長辺 c の長さは常に、辺 a と b の和以下でなければなりません。 これは正式には次のことを意味します。

c <= a + b

直角三角形では、カテタスの正方形の面積の合計は、斜辺の正方形の面積と等しくなければなりません。 ここで、a と b は直角に隣接する辺の長さであるカテーテル、c は直角の反対側の辺である斜辺の長さです。 これは正式には次のことを意味します。

c^2 = a^2 + b^2

上記のプログラム設計では、長さを静的に評価するよりも、これらの式をより適切に使用する必要があります。

解決策 4

見積もり:

プログラムは最初の2つの printf を出力していますが、3番目の出力では「数字は長方形の三角形を形成できます」と出力します

それは(あなたが要求したものだからです。
「||」の違いに注意してくださいと “&&”。

C++
if ((a==2) || (b==3) || (c==4))

“||” を使用すると、テストはいずれかの部分が true の場合に true になります。
「&&」を使用すると、すべての部分が true の場合に test が true になります。

コメント

タイトルとURLをコピーしました