Open In App

Menu driven program in C++ to perform various basic operations on array

Improve
Improve
Like Article
Like
Save
Share
Report

Prerequisite: Switch Statement in C/C++, Functions in C/C++, Loops in C and C++, C/C++ do-while loop with Examples

Write a menu-driven program to perform below various basic operations in the array:

Approach:

  • Check if a number is odd or even: There are 2 ways to achieve this:
    • By doing Bitwise AND of 1 and that digit if the result comes out to be 1 then the number is odd otherwise even.
    • By its divisibility by 2. A number is said to be odd if it is not divisible by 2, otherwise, it is even.
  • Find the sum and divide the sum by the total number of elements: By iterating through the whole array and adding it to a variable sum. Dividing the sum by total no. of elements to find the average.
  • Find the max and min in the array: Initialize values of min and max as minimum and maximum of the first two elements respectively. Starting from 3rd, compare each element with max and min, and change max and min accordingly. If the element is smaller than min then change min, Else if the element is greater than max then change max, Else ignore the element
  • Remove the duplicates from the array: Sort the array using the inbuilt sort( ) function. Create an auxiliary array temp[] to store unique elements. Traverse input array and one by one copy unique elements of arr[] to temp[]. Also, keep track of the count of unique elements. Let this count be j. Copy j elements from temp[] to arr[] and return j
  • Print the array in the reverse: Reverse an array or string

Below is the implementation of the above approach:

C++




// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to display all the menu in
// the current program
void menu()
{
    cout << "\n\t\tMENU :";
    cout << "\nPress 1 to print even "
         << "valued elements\n";
    cout << "Press 2 to print odd valued"
         << " elements\n";
    cout << "Press 3 to calculate sum "
         << "and average of elements in "
         << "the array\n";
    cout << "Press 4 to print maximum"
         << " and minimum element "
            "in the array\n";
    cout << "Press 5 to remove the "
         << "duplicacy in array \n";
    cout << "Press 6 to print array"
         << " in reverse\n";
    cout << "Press 7 to exit\n";
}
 
// Function to print even valued
// elements in the array arr[]
void even(int arr[], int len)
{
    cout << "Even numbers in the "
         << "array are - ";
    for (int i = 0; i < len; i++) {
        if (arr[i] % 2 == 0) {
            cout << arr[i] << "\t";
        }
    }
}
 
// Function to print odd valued
// elements in the array arr[]
void odd(int arr[], int len)
{
    cout << "Odd numbers in the "
         << "array are - ";
    for (int i = 0; i < len; i++) {
        if (arr[i] % 2 != 0) {
            cout << arr[i] << "\t";
        }
    }
}
 
// Function to print sum and the
// average of elements in array
void SumAverage(int arr[], int len)
{
    int sum = 0;
    for (int i = 0; i < len; i++) {
        sum += arr[i];
    }
    cout << "\n Sum     =" << sum;
    cout << "\n Average =" << sum / len;
}
 
// Function to print maximum and
// minimum elements in an array
void MaxMin(int arr[], int len)
{
    int max = arr[1], min = arr[0];
 
    // Traverse the array
    for (int i = 0; i < len; i++) {
 
        // Update the maximum
        if (arr[i] > max)
            max = arr[i];
 
        // Update the minimum
        if (arr[i] < min)
            min = arr[i];
    }
    cout << "Maximum = " << max
         << "\t";
    cout << "Minimum = " << min;
}
 
// Function to remove duplicate
// elements in an array
void RmDuplicacy(int arr[], int n)
{
    if (n == 0 || n == 1)
        cout << "No Duplicates";
 
    // sorting array using inbuilt
    // sort() function
    sort(arr, arr + n);
    int temp[n];
 
    // Start traversing elements
    int j = 0;
    for (int i = 0; i < n - 1; i++)
 
        // If current element is not
        // the same as the next element
        // then store the current element
        if (arr[i] != arr[i + 1])
            temp[j++] = arr[i];
 
    // Store the last element as whether
    // it is unique or repeated, it hasn't
    // stored previously
    temp[j++] = arr[n - 1];
 
    // Modify original array
    for (int i = 0; i < j; i++)
        arr[i] = temp[i];
 
    // j is now the size of the array
    // without duplicates
    for (int i = 0; i < j; i++) {
        cout << arr[i] << " ";
    }
}
 
// Function to print array
// in reverse order
void Reverse(int arr[], int len)
{
    cout << "\nArray in reverse"
         << " order:\n ";
    for (int i = len - 1; i >= 0; i--) {
        cout << arr[i] << "\t";
    }
}
 
// Driver Code
int main()
{
    int arr[100], i, num, choice;
    printf("Enter the size of "
           "an array :\n");
 
    cin >> num;
    printf("Enter the elements of "
           "the array :\n");
 
    for (i = 0; i < num; i++) {
        cin >> arr[i];
    }
 
    do {
        cout << "\n";
        menu();
        cout << "\nEnter your "
             << "choice:\n ";
        cin >> choice;
 
        switch (choice) {
        case 1:
            even(arr, num);
            break;
        case 2:
            odd(arr, num);
            break;
        case 3:
            SumAverage(arr, num);
            break;
        case 4:
            MaxMin(arr, num);
            break;
        case 5:
            RmDuplicacy(arr, num);
            break;
        case 6:
            Reverse(arr, num);
            break;
        case 7:
            exit(0);
            break;
        default:
            cout << "INVALID CHOICE :-(";
        }
 
    } while (choice != 7);
 
    return 0;
}


Output:



Last Updated : 02 Jun, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads