C言語

【C言語】第10章第2回:簡易計算機プログラム

C言語を使って、四則演算ができる簡易計算機を作成します。本記事では、基本的な入力処理から条件分岐、エラー処理までを学びます。

0. 記事の概要

この記事を読むメリット

  • 入力処理の基礎理解:ユーザーからのデータ入力を処理する方法を学びます。
  • 条件分岐の実践:選択肢に応じた異なる動作を実装できます。
  • エラー処理の基本:プログラムの安全性を向上させるスキルを習得します。

この記事で学べること

  • ユーザー入力処理の基本
  • 四則演算の実装
  • エラー処理の基礎

1. 簡易計算機の基本設計

1.1 計算機の機能

この計算機では、次の四則演算を実行できます。

  • 加算 (+)
  • 減算 (-)
  • 乗算 (*)
  • 除算 (/)

1.2 必要なプログラム構造

以下の要素を実装します。

  • ユーザー入力(2つの数値と演算子)
  • 条件分岐による演算処理
  • エラー処理(0による除算の回避など)

2. コード例と詳細解説

2.1 基本コード例

#include <stdio.h>

int main() {
    double num1, num2, result;
    char operator;

    printf("簡易計算機へようこそ!\n");
    printf("例: 5 + 3\n");
    printf("式を入力してください(数値 演算子 数値): ");
    scanf("%lf %c %lf", &num1, &operator, &num2);

    switch (operator) {
        case '+':
            result = num1 + num2;
            printf("結果: %.2lf\n", result);
            break;
        case '-':
            result = num1 - num2;
            printf("結果: %.2lf\n", result);
            break;
        case '*':
            result = num1 * num2;
            printf("結果: %.2lf\n", result);
            break;
        case '/':
            if (num2 != 0) {
                result = num1 / num2;
                printf("結果: %.2lf\n", result);
            } else {
                printf("エラー: 0で割ることはできません。\n");
            }
            break;
        default:
            printf("エラー: 無効な演算子です。\n");
            break;
    }

    return 0;
}
動作解説
  1. ユーザー入力:`scanf`で数値と演算子を取得します。
  2. 条件分岐による計算:`switch`文を使用して演算子に応じた計算を実行します。
  3. エラー処理:0で割る操作を回避する条件を設定しています。

3. 練習問題

以下の課題に挑戦して、簡易計算機を拡張してみましょう。

  1. 累乗(^)を追加して、数値を任意の指数で計算できるようにしてください。
  2. 連続計算を可能にし、「q」で終了する機能を追加してください。
  3. 無効な入力(例:文字列)の処理を追加して、安全性を高めてください。

4. 練習問題の解答と解説

問1の解答例

#include <stdio.h>
#include <math.h>

int main() {
    double num1, num2, result;
    char operator;

    printf("累乗機能付き簡易計算機へようこそ!\n");
    printf("例: 2 ^ 3\n");
    printf("式を入力してください(数値 演算子 数値): ");
    scanf("%lf %c %lf", &num1, &operator, &num2);

    switch (operator) {
        case '+':
            result = num1 + num2;
            printf("結果: %.2lf\n", result);
            break;
        case '-':
            result = num1 - num2;
            printf("結果: %.2lf\n", result);
            break;
        case '*':
            result = num1 * num2;
            printf("結果: %.2lf\n", result);
            break;
        case '/':
            if (num2 != 0) {
                result = num1 / num2;
                printf("結果: %.2lf\n", result);
            } else {
                printf("エラー: 0で割ることはできません。\n");
            }
            break;
        case '^':
            result = pow(num1, num2);
            printf("結果: %.2lf\n", result);
            break;
        default:
            printf("エラー: 無効な演算子です。\n");
            break;
    }

    return 0;
}

このプログラムでは、累乗(`^`)機能を追加し、数学ライブラリの`pow`関数を使用しています。

5. まとめ

本記事では、簡易計算機の作成手順を解説しました。プログラムを拡張して、より高度な機能を追加してみましょう。