- 締切済み
C++のプログラムが走りません。
<<条件は以下です。>> データメンバ x:xの座標(ただし 0-1000とする) y:yの座標(ただし 0-1000とする) z:zの座標(ただし 0-1000とする) メンバ関数 void setX(int a): xの座標を設計する(範囲外の値は、error messageを出力する) void setY(int b): Yの座標を設計する(範囲外の値は、error messageを出力する) void setZ(int c) Zの座標を設計する(範囲外の値は、error messageを出力する) int getX(): Xの座標値を得る int getY(): Yの座標値を得る int getZ(): Zの座標値を得る << 不明な点は、 if文で、どう戻るかがわからないことと、 最後の結果表示の部分です。 以下が、作成したプログラムです。ネットで検索して類似しているプログラムを参考にしたんですが。 よろしくお願いします。>> #include <iostream> using namespace std; class Zahyou{ private: int getX();//Xの座標値を得る int getY();//Yの座標値を得る int getZ();//Zの座標値を得る int a,b,c; public: void setX(int a);//Xの座標を設計する void setY(int b);//Yの座標を設計する void setZ(int c);//Zの座標を設計する void show(); }; void Zahyou::show(){ cout << "The result is: (" << a << "," << b << "," << c << ")"; } void Zahyou::setX(int a){ cout << " Please Input X " << "\n "; cin >> a ; if(a < 0 && a > 1000){ cout << "The value of X is a mistake, Please input X again! " << " \n "; } } void Zahyou::setY(int b){ cout << "Please Input Y " << "\n "; cin >> b ; if(b < 0 && b > 1000){ cout << "The value of y is a mistake, Please input X again! " << " \n "; cin >> b ; } } void Zahyou::setZ(int c){ cout << " Please Input Z " << "\n "; cin >> c ; if(c < 0 && c > 1000){ cout << "The value of Z is a mistake, Please input X again! " << " \n "; cin >> c ; } } int main(){ Zahyou zahyou1; zahyou1.getX(); zahyou1.getY(); zahyou1.getZ(); zahyou1.show(); return 0; }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Wr5
- ベストアンサー率53% (2173/4061)
>if(a < 0 && a > 1000){ > cout << "The value of X is a mistake, Please input X again! " << " \n "; >} 変数aの値が、0より小さく、『かつ』1000より大きい場合にメッセージが表示されます。 変数aに-1が設定されたとしましょう。 「0より小さい」という条件は満たしますが、「-1が1000より大きい」という条件は満たせません。 よってエラーメッセージは表示されません。 では、変数aが1001だったとしましょう。 「0より小さい」が満たせませんのでその後の評価は行われません。 &&で結合するということはどちらか一方が条件を満たさなければいけません。 ということで、この場合のif文の条件が成立することは有り得ないということになります。 コンパイラは「絶対に実行されない」コードを生成しない場合があります。無駄ですから…。 a < 0 && a > 1000 ではなく a < 0 || a > 1000 ではありませんか? こちらなら、 aが0より小さい、または1000より大きい という条件になります。 # あと、 [技術者向] コンピューター > プログラミング > C&C++ ってというカテゴリがあります。
お礼
ありがとうございます。 どこのカテゴリか迷ってました^^; if文について、詳しい説明ありがとうございます。 forつかうのかなとか考えてました。 改良してもう少し考えて、 まだ走らなかったら教えていただいたカテゴリで質問してみます。 違うカテゴリなのに答えてくださってありがとうございました。