>>この記事には書き直した新しいページがあります。<<
<<前 [TOP] 次>>
Visual Studioで新規プロジェクトを作り、次のcppファイルを作成して下さい。
【EnzanTest1.cpp】
#include <iostream> void main() { int a, b, c, ans, mondaisu, seikaisu; mondaisu = 4; seikaisu = 0; std::cout << "以下の問題では、真の時は1を、偽の時は0を入力してください。"; std::cout << std::endl << std::endl; /*問題1*/ a=5; b=3; std::cout << "a=" << a << ", b=" << b; std::cout << " の時、a>1 && b>2 は真(1)か偽(0)か?答え=> "; std::cin >> ans; if ( ans == (a>1 && b>2) ){ seikaisu++; } /*問題2*/ a=2; b=-2; std::cout << "a=" << a << ", b=" << b; std::cout << " の時、a<0 || b<0は真(1)か偽(0)か?答え=> => "; std::cin >> ans; if ( ans == (a<0 || b<0) ){ seikaisu++; } /*問題3*/ a=-4; b=-2; std::cout << "a=" << a << ", b=" << b; std::cout << "の時、a<0 && b>0 は真(1)か偽(0)か?答え=>=> "; std::cin >> ans; if ( ans == (a<0 && b>0) ){ seikaisu++; } /*問題4*/ a=8; b=-2; c=0; std::cout << "a=" << a << ", b=" << b << ", c=" << c; std::cout << " の時、a>0 && b>-2 || c>-1 は真(1)か偽(0)か?答え=>=> "; std::cin >> ans; if ( ans == (a>0 && b>-2 || c>-1) ){ seikaisu++; } std::cout << "正解は、" << mondaisu; std::cout << " 問中" << seikaisu << "問です。" << std::endl; if ( mondaisu == seikaisu) { std::cout << "全問正解です。次の課題に進んでください。" << std::endl; } else { std::cout << "もう一度やり直してください。" << std::endl; } }
論理演算とは、真と偽の値をもつものの間の演算のことで、結果は必ず真または偽になるものです。
論理演算子には次の3つがあります。
演算子 | 機能 | 優先順位 |
! | 否定 | 1 |
&& | and(かつ) | 2 |
|| | or(または) | 3 |
もう少し詳しく説明すると次のようになります。
否定 | 真のものを否定すれば偽。偽を否定すれば真。 |
論理 and | 2つの論理値が同時に真であるときのみ真。それ以外はすべて偽。 |
論理 or | 2つの論理値が同時に偽であるときの偽。それ以外はすべて真。 |
論理演算で、真(true)であるというのは、数字で表すと 1 になります。
逆に偽(false)であるということは 0 になります。
サンプルプログラムをビルドしてデバッグしてみましょう。
選択が4つ以上あるクイズを考え、答えの番号を入力させるプログラムです。
正しければ正解であることを表示して終了し、間違っていれば誤答であることを表示します。
Visual Studioで新規プロジェクトを作り、次のcppファイルを作成して下さい。
【EnzanTest2.cpp】
#include <iostream> void main() { int a, b, c; std::cout << "三角形の3辺の長さを入力してください。" << std::endl; std::cout << "まず最初に、一辺の長さ aを自然数で入力してください。--->" << std::endl; for (std::cin >> a ; !std::cin ; std::cin >> a){ std::cin.clear(); std::cin.ignore(); std::cout << "入力が間違ってます" << std::endl << "長さ aを自然数で入力してください。-->"; } std::cout << "次にもう一辺の長さ bを自然数でstd::。--->" << std::endl; for (std::cin >> b ; !std::cin ; std::cin >> b){ std::cin.clear(); std::cin.ignore(); std::cout << "入力が間違ってます" << std::endl << "長さ bを自然数で入力してください。-->"; } std::cout << "最後に 辺の長さcを自然数で入力してください。--->" << std::endl; for (std::cin >> c ; !std::cin ; std::cin >> c){ std::cin.clear(); std::cin.ignore(); std::cout << "入力が間違ってます" << std::endl << "長さcを自然数で入力してください。-->"; } if ((a+b>c && b+c>a && c+a>b) == 1 ){ std::cout << "三角形として成り立っています" << std::endl; } else { std::cout << "三角形として成立していません。" << std::endl; } }
三角形の3辺の長さを与えたときに、その三角形が成立しているかどうかを調べるプログラムです。
三角形というのは、どんな長さの3辺を与えても三角形が成立するわけではありません。
例えば、斜辺の長さが異常に長い1000のような値をとるとき、他の2辺が1,1の長さならば明らかに、これは三角形として成立しません。
一般に三角形の3辺をa, b, c とすると、一般に三角形の成立条件は、a+b >c かつ b + c > a かつ c + a > b です。
三辺の長さ(自然数)をキーボードから入力できるようにしています。
サンプルプログラムをビルドしてデバッグしてみましょう。
三角形として成立していれば、「三角形として成り立っています」と出力され、成立していなければ、「三角形として成立していません。」と出力されます。
Visual Studioで新規プロジェクトを作り、次のcppファイルを作成して下さい。
【EnzanTest3.cpp】
#include <iostream> void main() { int a, b, c, temp; std::cout << " 三角形の3辺の長さを入力してください。"<< std::endl; std::cout << "まず最初に、一辺の長さ aを自然数で入力してください。--->" << std::endl; for (std::cin >> a ; !std::cin ; std::cin >> a){ std::cin.clear(); std::cin.ignore(); std::cout << "入力が間違ってます" << std::endl << "長さ aを自然数で入力してください。-->"; } std::cout << "次にもう一辺の長さ bを自然数で入力してください。--->" << std::endl; for (std::cin >> b ; !std::cin ; std::cin >> b){ std::cin.clear(); std::cin.ignore(); std::cout << "入力が間違ってます" << std::endl << "長さ bを自然数で入力してください。-->"; } std::cout << "最後に 辺の長さcを自然数で入力してください。--->" << std::endl; for (std::cin >> c ; !std::cin ; std::cin >> c){ std::cin.clear(); std::cin.ignore(); std::cout << "入力が間違ってます" << std::endl << "長さcを自然数で入力してください。-->"; } if ( a < b ){ temp=a; a=b; b=temp; } if ( a < c ){ temp=a; a=c; c=temp; } if ((a+b>c && b+c>a && c+a>b) == 1 ){ std::cout << "三角形は成立しています。" << std::endl; if ((a*a == b*b + c*c) == 1 ){ std::cout << "この三角形は直角三角形です。" << std::endl; } else if ((a*a > b*b + c*c) == 1 ){ std::cout << "この三角形は鈍角三角形です。" << std::endl; } else if ((a*a < b*b + c*c) == 1 ){ std::cout << "この三角形は鋭角三角形です。" << std::endl; } } else { std::cout << "三角形として成立していません。"<< std::endl; } }
三角形の3辺の長さを与えたときに、その三角形が成立しているかどうかを調べ、三角形の成立条件を調べた上で、形状を調べるプログラムです。
三角形の形状にはいろいろなものがあるが、これは、直角三角形、鈍角三角形、鋭角三角形のどれかを調べるプログラムです。
以下では、最も長い辺を a とし、それ以外の辺を b, c としています。
ただし、どれか2つ、あるいは3つの辺が等しい場合も含んでいます。
1.直角三角形 a*a = b*b + c*c が成立するもの。
2.鈍角三角形 a*a > b*b + c*c が成立するもの。
3.鋭角三角形 a*a < b*b + c*c が成立するもの。
最も長い辺を求めるために以下の処理を行っています。
if ( a < b ){ temp=a; a=b; b=temp; } if ( a < c ){ temp=a; a=c; c=temp; }
これで、 a > b かつ a > c になっています。
サンプルプログラムをビルドしてデバッグしてみましょう。
与えられた条件に対し、直角三角形、鈍角三角形、鋭角三角形のどれかを表示します。
<<前 [TOP] 次>>