はじめての C
論理演算というのは CPUの構造からみると
- ! → NOT 回路
- && → AND 回路
- || → OR 回路
というふうに、演算論理回路の仕組みにいちばん当てはまってるように思う ← まちがってる ?
三角形の3辺の長さを与えたとき
その三角形がなりたつか否かを
しらべるプログラムを作成せよ。
- /* sankaku */
- #include
- main()
- {
- int a, b, c;
- printf("これから3つの数字を入力して\n");
- printf("それが三角形になるか否かを\n");
- printf("判定します。\n\n");
- printf("1つ目の数字を入力 a = ");
- scanf("%d", &a);
- printf("2つ目の数字を入力 b = ");
- scanf("%d", &b);
- printf("3つ目の数字を入力 c = ");
- scanf("%d", &c);
- if (a + b > c && b + c > a && c + a > b) {
- printf("\n");
- printf("この3つの数字で三角形ができます。\n");
- } else {
- printf("\n");
- printf("残念だけど三角形にはなりません。\n");
- }
- }
プログラム sankaku を手直しして
三角形の種類も判別できる
プログラムを作成せよ。
- /* sankaku.2 */
- #include
- main()
- {
- int a, b, c, temp;
- printf("これから3つの数字を入力して\n");
- printf("三角形になるか否かを判定し\n");
- printf("それが三角形なら\n");
- printf("どんな形状かを知らせます。\n\n");
- printf("1つ目の数字を入力 a = ");
- scanf("%d", &a);
- printf("2つ目の数字を入力 b = ");
- scanf("%d", &b);
- printf("3つ目の数字を入力 c = ");
- scanf("%d", &c);
- if (a < b) {
- temp = a; a = b; b = temp; /* swap a, b */
- }
- if (a < c) {
- temp = a; a = c; c = temp; /* swap a, c */
- }
- if ((a + b > c && b + c > a && c + a > b) != 1) {
- printf("\n");
- printf("残念だけど三角形にはなりません。\n");
- }
- for ( ; (a + b > c && b + c > a && c + a > b) == 1 ; ) {
- if (a * a == b * b + c * c) {
- printf("\n");
- printf("直角三角形になります。\n");
- break;
- } else if (a * a > b * b + c * c) {
- printf("\n");
- printf("鈍角三角形になります。\n");
- break;
- } else if ( a * a < b * b + c * c) {
- printf("\n");
- printf("鋭角三角形になります。\n");
- break;
- }
- }
- }
(break は余分だったかなあ)
text: 金山典世さん(稚内北星)のページ