📜  C++中的菜单驱动程序对数组执行各种基本操作

📅  最后修改于: 2021-09-07 05:17:08             🧑  作者: Mango

先决条件: C/C++ 中的 Switch 语句、C/C++ 中的函数、C 和 C++ 中的循环、C/C++ do-while 循环和示例

编写一个菜单驱动程序来执行数组中的以下各种基本操作:

  • 打印数组中的所有偶数值。
  • 打印数组中的所有奇数值。
  • 数组中元素的总和和平均值。
  • 查找数组中的最大和最小元素。
  • 从数组中删除重复项。

方法:

  • 检查数字是奇数还是偶数:有两种方法可以实现:
    • 通过对 1 和该数字进行按位与运算,如果结果为 1,则该数字为奇数,否则为偶数。
    • 能被 2 整除。如果一个数不能被 2 整除,则称其为奇数,否则为偶数。
  • 求总和并将总和除以元素总数:通过遍历整个数组并将其添加到变量 sum。总和除以总数。元素的平均值。
  • 找到数组中的最大值和最小值:将最小值和最大值分别初始化为前两个元素的最小值和最大值。从第 3 个开始,将每个元素与 max 和 min 进行比较,并相应地更改 max 和 min。如果元素小于 min 则更改 min,否则如果元素大于 max 则更改 max,否则忽略该元素
  • 从数组中删除重复项:使用内置的 sort()函数对数组进行排序。创建一个辅助数组 temp[] 来存储唯一元素。遍历输入数组,将arr[]的唯一元素一一复制到temp[]。另外,跟踪唯一元素的数量。让这个计数为 j。将 j 个元素从 temp[] 复制到 arr[] 并返回 j
  • 反向打印数组:反转数组或字符串

下面是上述方法的实现:

C++
// C++ program for the above approach
#include 
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;
}


输出:

如果您想与行业专家一起参加直播课程,请参阅Geeks Classes Live