<<前 [TOP] 次>>
Visual Studioで新規プロジェクトを作り、次のcppファイルを作成して下さい。
【EnzanTest1.cpp】
#include <iostream> int 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> int 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> int 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」になっています。
サンプルプログラムをビルドして実行してみましょう。
与えられた条件に対し、直角三角形、鈍角三角形、鋭角三角形のどれかを表示します。
↓↓クリックして頂けると励みになります。