複数の論理演算の組み合わせ

論理演算は複数連結することができます。たとえば、簡単な問題として、長方形Rの中に点p (x, y)が含まれるかを判定する方法を考えます。ここで、長方形Rの幅をW、高さをH、左下の座標を(0, 0)とします。

p がRに含まれる条件は、以下の4つを全て満たすことです。

  • 点 p の x 座標が 0 以上
  • 点 p の x 座標が W 以下
  • 点 p の y 座標が 0 以上
  • 点 p の y 座標が H 以下

これらを比較演算と論理演算を組み合わせて条件式として表すと以下のようになります:

if (x >= 0 and x <= W and y >= 0 and y <= H){
  cout << "点 p は長方形の中に含まれる" << endl;
} else {
  cout << "点 p は長方形の中に含まれない" << endl;
}

一方、以下のような考え方も可能です。

p がRに含まれない条件は、以下の4つのいずれかを満たすことです。

  • 点 p の x 座標が 0 未満
  • 点 p の x 座標が W より大きい
  • 点 p の y 座標が 0 未満
  • 点 p の y 座標が H より大きい

これらを比較演算と論理演算を組み合わせて条件式として表すと以下のようになります:

if ( x < 0 or x > W or y < 0 or y > H ){
  cout << "点 p は長方形の中に含まれない" << endl;
} else {
  cout << "点 p は長方形の中に含まれる" << endl;
}

Reference

 

オンラインジャッジではじめるC/C++プログラミング入門 (マイナビ)

AIZU ONLINE JUDGE のコース問題を題材にした解説書です。各トピックごとに C/C++ 言語の基礎的な内容を学習し、Introduction to Programming の演習問題にチャレンジしていきます。内容は敷居の高いものではなく、プログラミング初学者が取り組む例題からスタートしています。