-11

だから私は現在、学校のプロジェクト用の電卓を作っています。電卓のポイントは三角形を計算することです。ユーザーは、2 つの側面と 1 つの角度、または 2 つの角度と 1 つの側面のいずれかの 3 つの情報を提供する必要があります。

以下のコードでわかるように、プロジェクトを進める方法がわかりません。私はC#にかなり慣れていません。A、B、および c が提供されている場合はこれを計算する必要があり、A、B、および b が提供されている場合はこれを計算する必要があるなどを確認する必要があります。しかし、「if-else」コマンドの実行方法がわかりません。

  private void button1_Click(object sender, EventArgs e)
    {
        List<double> angles = new List<double>();
        List<double> sides = new List<double>();
        double A = (AAngle.Text == "") ? 0.00 : Convert.ToDouble(AAngle.Text);
        double B = (BAngle.Text == "") ? 0.00 : Convert.ToDouble(BAngle.Text);
        double C = (CAngle.Text == "") ? 0.00 : Convert.ToDouble(CAngle.Text);
        double a = (ASide.Text == "") ? 0.00 : Convert.ToDouble(ASide.Text);
        double b = (BSide.Text == "") ? 0.00 : Convert.ToDouble(BSide.Text);
        double c = (CSide.Text == "") ? 0.00 : Convert.ToDouble(CSide.Text);
        if (!(A == 0.00))
            angles.Add(A);
        if (!(B == 0.00))
            angles.Add(B);
        if (!(C == 0.00))
            angles.Add(C);
        if (!(a == 0.00))
            sides.Add(a);
        if (!(b == 0.00))
            sides.Add(b);
        if (!(c == 0.00))
            sides.Add(c);
        if ((angles.Count() == 2 && sides.Count == 1) || (angles.Count == 1 && sides.Count == 2))
        {
           if ???
        }
        else
        {
            MessageBox.Show("NOT ENOUGH OR TOO MANY SIDES/ANGLES PROVIDED OR NOT A VALID TRIANGLE");
        }
    }
4

3 に答える 3

1

次のようなelseifステートメントを使用します。

    if (angles.Count() == 2 && sides.Count == 1)
    {
       // calculate based on two angles and one side
    }
    else if (angles.Count == 1 && sides.Count == 2)
    {
       // calculate based on one angle and two sides
    }
    else
    {
       MessageBox.Show(...)
    }
于 2013-03-05T10:38:41.613 に答える
0

簡単な解決策として、2つのケースをいくつかのホルダーブール値に割り当て、それに応じて行動します。

var angles = (angles.Count >= 2 && sides.Count >= 1);
var sides = (angles.Count == 1 && sides.Count >= 2);
if (angles)
{ calculateTriangleFromAngles(); }
else if (sides)
{ calculateTriangleFromAngles(); }
else
{ MsgBox.... }

@ user1012630が言ったように、私は> =を使用して、角度と辺の両方に3つ以上の値を与えるユーザーに対応しました...もちろん、ユーザーが不可能な三角形の値を提供する場合は、いくつかのエッジケースを追加する必要があります。

別の補足:使用しないでくださいConvert.ToDouble()。変換が失敗すると例外がスローされます。Double.TryParse()値を取得するか、正常に失敗するために使用することをお勧めします。

于 2013-03-05T10:44:41.750 に答える
0

ここでC#if-elseリファレンスを試すことができます。

自分でコードを書いてみてください。期待どおりに機能しない場合は、ここでフォローアップしてください。

于 2013-03-05T10:38:43.963 に答える