C 言語を使った簡単な電卓の作成

CBeginner
オンラインで実践に進む

はじめに

このプロジェクトでは、C 言語を使って簡単な電卓を作成する方法を学びます。この電卓は、加算、減算、乗算、除算などの基本的な算術演算を行うことができます。また、ユーザー入力が有効であることを確認し、入力が未定義の動作につながる場合を処理するためのチェックも実装します。

👀 プレビュー

$./Calculator
32+11
=43.000000

$./Calculator
41-34.9
=6.100000

$./Calculator
10/2
=5.000000

$./Calculator
2*4
=8.000000

$./Calculator
10%3
=1

🎯 タスク

このプロジェクトでは、以下のことを学びます。

  • scanf()を使って C 言語でユーザー入力を取得する方法
  • 入力された算術式の形式をチェックする方法
  • ユーザー入力に基づいて算術計算を行う方法
  • ゼロ除算エラーを処理する方法
  • 整数演算子のみに対して剰余演算子を実装する方法

🏆 成果

このプロジェクトを完了すると、以下のことができるようになります。

  • C 言語でユーザー入力を取得する方法を理解する
  • C 言語でさまざまな算術演算を実装する
  • エラーチェックを行い、無効な入力を処理する
  • gccコンパイラを使って C プログラムをコンパイルして実行する

ユーザー入力を取得する

ユーザー入力を取得するのは非常に簡単で、C 言語のフォーマット付き入出力関数printf()scanf()を使うことができます。

ここにユーザー入力を読み取るためのプログラムコードがあります。

#include<stdio.h>
int main()
{
   double number1=0.0;     // 最初のオペランドを定義する
   double number2=0.0;     // 2 番目のオペランドを定義する
   char operation=0;       // operation は'+' '-' '*' '/'または'%'でなければならない

   printf("\nEnter the calculation\n");
   scanf("%lf%c%lf",&number1,&operation,&number2);

   return 0;
}

形式をチェックして計算を行う

次に、プログラムが実装する必要のある機能は、入力された算術式の形式をチェックすることです。

最も基本的なチェックは、入力式で指定された演算子が有効かどうかを判断することです。有効な演算子は+, -, *, /, %ですので、入力演算子がこのセットに属するかどうかをチェックする必要があります。

また、演算子が/または%の場合、2 番目のオペランドが0であってはなりません。0である場合、演算子は無効です。

これらのチェックのロジックは、if文を使って実装することができます。あるいは、switch文はこれを処理するためのより良く、より簡潔な方法を提供します。一連のif文と比較して、理解しやすく、冗長さが少なくなります。

switch(operation)
{
    case '+':
        printf("=%lf\n",number1+number2);
        break;

    case '-':
        printf("=%lf\n",number1-number2);
        break;

    case '*':
        printf("=%lf\n",number1*number2);
        break;

    case '/':
        if(number2==0)
            printf("\n\n\aDivision by zero error!\n");
        else
            printf("=%lf\n",number1/number2);
        break;

    case '%':
        if((long)number2==0)
            printf("\n\n\aDivision by zero error!\n");
        else
            printf("=%ld\n",(long)number1%(long)number2);
        break;

    default:
        printf("\n\n\aInvalid operation!\n");
        break;
}

剰余演算子%は、float型やdouble型には意味がありません。なぜなら、それらは正確な結果を表すことができるからです。%演算子は整数型に適用した場合にのみ意味があります。したがって、この演算子を適用する前に、オペランドを整数に変換する必要があります。演算子が%の場合、2 番目のオペランドが整数に変換されます。したがって、2 番目のオペランドが0であるかどうかだけでなく、long型に変換したときのnumber2の値が0であるかどうかもチェックする必要があります。たとえば、0.50ではありませんが、整数に変換すると0になります。

ファイルのコンパイルと実行

プログラムファイルを書いた後、ソースファイルをコンパイルして実行可能ファイルを取得することができます。コンパイルするコマンドは以下の通りです。

gcc -o Calculator Calculator.c

注:上記のgccコマンドの形式はgcc -o output_filename source_filename.cです。「output_filename」が指定されていない場合、デフォルトの出力ファイル名はa.outです。

この時点で、ディレクトリにCalculatorという名前の新しいファイルがあることに気付くでしょう。これは、ソースファイルをコンパイルしてリンクした後に取得した実行可能ファイルです。実行するには、./Calculatorというコマンドを使います。

./Calculator
$./Calculator
32+11
=43.000000

$./Calculator
41-34.9
=6.100000

$./Calculator
10/2
=5.000000

$./Calculator
2*4
=8.000000

$./Calculator
10%3
=1

まとめ

このプロジェクトでは、C 言語を使って簡単な電卓を作成しました。現在、この電卓の機能は限られており、2 つのオペランドによる基本的な計算のみをサポートしています。学生はこの電卓をさらに拡張していくことができます。たとえば、複数のオペランドに対するサポートを追加したり、演算子の優先順位メカニズムを導入したりすることができます。

✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習