C++ Program to Implement a Basic Calculator

Introduction

A basic calculator is a simple yet powerful tool that performs arithmetic operations like addition, subtraction, multiplication, and division. Implementing a calculator in C++ is an excellent exercise for beginners to understand fundamental programming concepts such as input/output handling, control structures, and functions. In this article, we’ll explore how to create a C++ Program to Implement a Basic Calculator. We’ll cover the necessary prerequisites, provide detailed explanations for different implementations, and show the outputs for each example. By the end of this article, you’ll have a solid understanding of how to build a simple calculator in C++.

Prerequisites

Before we dive into the code, it’s essential to have a basic understanding of:

  1. C++ Programming Language: Familiarity with basic syntax, variables, and data types.
  2. Control Structures: Understanding of conditional statements (if-else) and loops.
  3. Functions: Knowledge of how to define and use functions in C++.
  4. Standard Input/Output: Familiarity with cin and cout for handling user input and displaying output.

With these prerequisites in mind, let’s explore different ways to implement a basic calculator in C++.

Example 1: Basic Calculator Using if-else Statements

Code Explanation

In this example, we will create a simple calculator that performs basic arithmetic operations using if-else statements to determine the operation.

Code

C++
#include <iostream>
using namespace std;

int main() {
    char operation;
    float num1, num2;

    cout << "Enter an operator (+, -, *, /): ";
    cin >> operation;
    cout << "Enter two operands: ";
    cin >> num1 >> num2;

    if (operation == '+') {
        cout << num1 << " + " << num2 << " = " << num1 + num2 << endl;
    } else if (operation == '-') {
        cout << num1 << " - " << num2 << " = " << num1 - num2 << endl;
    } else if (operation == '*') {
        cout << num1 << " * " << num2 << " = " << num1 * num2 << endl;
    } else if (operation == '/') {
        if (num2 != 0) {
            cout << num1 << " / " << num2 << " = " << num1 / num2 << endl;
        } else {
            cout << "Error! Division by zero." << endl;
        }
    } else {
        cout << "Error! Invalid operator." << endl;
    }

    return 0;
}

Output

C++
Enter an operator (+, -, *, /): +
Enter two operands: 5 3
5 + 3 = 8

Explanation

In this example, the user is prompted to enter an operator and two operands. The calculator then performs the corresponding arithmetic operation based on the operator entered. If the operator is invalid or if there is an attempt to divide by zero, an error message is displayed.

Example 2: Basic Calculator Using switch-case Statements

Code Explanation

In this example, we will use switch-case statements to implement the basic calculator. This approach is more efficient and readable compared to multiple if-else statements.

Code

C++
#include <iostream>
using namespace std;

int main() {
    char operation;
    float num1, num2;

    cout << "Enter an operator (+, -, *, /): ";
    cin >> operation;
    cout << "Enter two operands: ";
    cin >> num1 >> num2;

    switch (operation) {
        case '+':
            cout << num1 << " + " << num2 << " = " << num1 + num2 << endl;
            break;
        case '-':
            cout << num1 << " - " << num2 << " = " << num1 - num2 << endl;
            break;
        case '*':
            cout << num1 << " * " << num2 << " = " << num1 * num2 << endl;
            break;
        case '/':
            if (num2 != 0) {
                cout << num1 << " / " << num2 << " = " << num1 / num2 << endl;
            } else {
                cout << "Error! Division by zero." << endl;
            }
            break;
        default:
            cout << "Error! Invalid operator." << endl;
            break;
    }

    return 0;
}

Output

C++
Enter an operator (+, -, *, /): -
Enter two operands: 7 2
7 - 2 = 5

Explanation

In this example, the switch-case statement is used to determine the operation based on the user’s input. This approach simplifies the code by eliminating the need for multiple if-else statements and makes it easier to read and maintain.

Example 3: Basic Calculator Using Functions

Code Explanation

In this example, we will modularize the calculator by defining separate functions for each arithmetic operation. This approach enhances code reusability and organization.

Code

C++
#include <iostream>
using namespace std;

float add(float a, float b) {
    return a + b;
}

float subtract(float a, float b) {
    return a - b;
}

float multiply(float a, float b) {
    return a * b;
}

float divide(float a, float b) {
    if (b != 0) {
        return a / b;
    } else {
        cout << "Error! Division by zero." << endl;
        return 0;
    }
}

int main() {
    char operation;
    float num1, num2;

    cout << "Enter an operator (+, -, *, /): ";
    cin >> operation;
    cout << "Enter two operands: ";
    cin >> num1 >> num2;

    switch (operation) {
        case '+':
            cout << num1 << " + " << num2 << " = " << add(num1, num2) << endl;
            break;
        case '-':
            cout << num1 << " - " << num2 << " = " << subtract(num1, num2) << endl;
            break;
        case '*':
            cout << num1 << " * " << num2 << " = " << multiply(num1, num2) << endl;
            break;
        case '/':
            cout << num1 << " / " << num2 << " = " << divide(num1, num2) << endl;
            break;
        default:
            cout << "Error! Invalid operator." << endl;
            break;
    }

    return 0;
}

Output

Explanation

In this example, separate functions (add, subtract, multiply, and divide) are defined for each arithmetic operation. The main function uses a switch-case statement to call the appropriate function based on the user’s input. This modular approach improves code readability and reusability.

Conclusion

Implementing a basic calculator in C++ is a great way to reinforce fundamental programming concepts. Through the examples provided, we’ve seen different ways to build a calculator using if-else statements, switch-case statements, and modular functions. Each method has its own advantages and use cases