-3

位置エネルギーの変化 ( ΔPE= mgΔh ) を計算する複雑なプログラムを書いています。

Console.WriteLine("Mass in kg");
string cmMa = Console.ReadLine();
double cMass;
if(!Double.TryParse(cmMa, out cMass) )
{
    Console.WriteLine("Only numbers!");
    Console.ReadLine();
}
Console.WriteLine("First height in m");
string cfH = Console.ReadLine();
double fH;
if(!Double.TryParse(cfH, out fH))
{
    Console.WriteLine("Only numbers!");
    Console.ReadLine();
}
Console.WriteLine("Second height in m");
string csH = Console.ReadLine();
double sH;
if(!Double.TryParse(csH, out sH))
{
    Console.WriteLine("Only numbers!");
    Console.ReadLine();
}
double ch = fH - sH;
Console.WriteLine("Intermediate result: Change in height(Δh)= "+ch+" m" );
Console.ReadLine();
double ng = 9.81;  //   m/s^2
Console.WriteLine("CHANGE IN POTENTIAL ENERGY: "+ch*cMass*ng+" J");

最後に、sH>fH の場合に値が入れ替わる if ステートメントを追加します。どのような概念を適用する必要がありますか?

4

7 に答える 7

1
if (sH > fH) {
  double temp = sH;
  sH = fH;
  fH = temp;
}

スワップは、一時的な 3 番目の変数を使用して実行できます。sH を一時変数に格納し、sH を fH に割り当てます。このようにして、sH の値はキャッシュされ、再割り当て時に失われません。最後に、fH を temp に割り当てます。値が交換されます。

お役に立てれば

于 2013-06-30T15:03:39.947 に答える
1

使用する:

static void Main(string[] args)
{
    Console.WriteLine("please imput number 1 ");
    int a = Convert.ToInt32(Console.ReadLine());
    Console.WriteLine("please imput number 2 ");
    int b = Convert.ToInt32(Console.ReadLine());

    if (a > b)
    {
        int temp1 = a;
        int temp2 = b;
        b = temp1;
        a = temp2;
    }
}
于 2015-04-28T20:31:39.307 に答える
1

chこれを行う理由が、ここで否定的ではないためであると仮定します。

double ch = fH - sH;

絶対値を取得するだけです:

double ch = Math.Abs(fH - sH);
于 2013-06-30T15:06:56.567 に答える
0

Er... A を tmp 変数にコピーし、B を A にコピーし、tmp を B にコピーしますか? あなたは強力な解析を扱っているので、(安全でない整数処理による) xor-swap のようなクレイジーなものが正当化されるとは思えません。

于 2013-06-30T15:01:00.237 に答える
-2

これを試してみてください。ただし、これは一時変数を使用するほど高速ではありません。

if (sH > fH)
{
    sH -= fH;
    fH += sH;
    sH = fH - sH;
}
于 2013-12-01T15:04:49.133 に答える