-4

私のコードによって例外が生成されています。

X = x * 10;
Y = y * 10;

if ((pow(X, 2))+(pow(Y, 2)) <= 27225 and ((pow(X, 2))+(pow(Y, 2)) >= 1225))

ユーザーは と の値を入力しxy値が低すぎない場合、プログラムは続行されます。上記で x と y を double として宣言しました。この部分の上にコードがありますが、それは始まりではありません。

私は他のif機能としてこのコードを持っています

if (((pow(X, 2))+(pow(Y, 2)) > 27225) or ((pow(X, 2))+(pow(Y, 2)) <1225))
{
      cout<<"\n\nThe values you have chosen for the centre points are to not compatible with our program. Please choose smaller values.";//new
      cout<<"\n\nIf you do not understand, please ask the programmer for further explanation.";
}

ただし、制限が課されていないため、値が大きすぎたり小さすぎたりしても通常どおり実行され続けるため、コードをまったく機能させることができません。ありがとう

4

2 に答える 2

5

if最初の条件は、1225 より大きく 27225 より小さいかどうかを確認する必要があると思います。

if ((pow(X, 2))+(pow(Y, 2)) <= 27225 && ((pow(X, 2))+(pow(Y, 2)) >= 1225))
//                              Here ^^

Xあなたが持っているように、条件はandのすべての可能な値に対して満たされYます。すべての数値は 27225 未満か 1225 を超えています。

2 番目の条件については、else代わりに次のようにします。

if ((pow(X, 2))+(pow(Y, 2)) <= 27225 && ((pow(X, 2))+(pow(Y, 2)) >= 1225)) {
  // Distance from origin is within range
} else {
  // Distance from origin is outside range
}

orandは、 と の代替トークンであるため、一般的には使用されない||ことに注意してください&&。他のほとんどの開発者||との一貫性のために、固執することをお勧めします。&&

于 2013-03-22T17:18:05.743 に答える