如何检查用户输入的数组元素是否在C ++中排序

How to check whether array elements entered by user are sorted or not in c++

所以这是一个简单的 c++ 程序,它使用 new 运算符动态地从用户那里获取 2 个排序的数组,并将它们的大小相加以创建第三个数组,该数组的长度等于两个数组总和的长度。 点赞final_arr = arr1_size +arr2_size; 一切正常,但问题是我正在从用户那里获取数组值,所以我需要检查用户输入的数组是否已排序,如果数组未排序,则程序必须从用户那里获取数组值,直到他以正确的顺序输入。我正在使用带有 goto 语句的标签来检查数组,如果找到比前一个元素小的元素,那么我们将通过 goto 语句进入 for 循环的顶部。如下面的代码所示。

            //receiving array 1 input from user dynamically...
        cout << "How many numbers you want to enter for array 1" << endl;
        cin >> arr1_size;
        arr1 = new int [arr1_size]; //creating array dynamically
        arr1_label: //goto label
        cout << "Enter numbers " << endl; //just to display 
        for (int i = 0; i < arr1_size; i++) { //loop for taking value from the user for arr1
            cin >> arr1[0];
        }
        for (int i = 1; i < arr1_size; ) {//loop for checking for unordered array, if detects restart the input for loop
            if (arr1[i--] > arr1[i]) {
                cout << "Array 1 is not sorted" << endl;
                goto arr1_label;
                break;
            }
            i++;
        }

这个任务我不能使用vector...我只需要动态使用数组...下面给出了项目的完整代码..

int main()
{

        int arr1_size, arr2_size, final_arr_size;
        int* arr1; int* arr2; int* final_array;

        //receiving array 1 input from user dynamically...
        cout << "How many numbers you want to enter for array 1" << endl;
        cin >> arr1_size;
        arr1 = new int [arr1_size]; //creating array dynamically
        arr1_label: //goto label
        cout << "Enter numbers " << endl; //just to display 
        for (int i = 0; i < arr1_size; i++) { //loop for taking value from the user for arr1
            cin >> arr1[0];
        }
        for (int i = 1; i < arr1_size; ) {//loop for checking for unordered array, if detects restart the input for loop
            if (arr1[i--] > arr1[i]) {
                cout << "Array 1 is not sorted" << endl;
                goto arr1_label;
                break;
            }
            i++;
        }
        
            
        
        //receiving array 2 input from user dynamically...
        cout << "How many numbers you want to enter for array 2" << endl;
        cin >> arr2_size;
        arr2 = new int[arr2_size];
        cout << "Enter numbers " << endl;
        for (int i = 0; i < arr2_size; i++) {
            cin >> arr2[i];
        }



        //Merged array code here...
        final_arr_size = arr1_size + arr2_size;
        final_array = new int[final_arr_size];
        int i = 0, j = 0, k = 0;
        while (i < arr1_size && j < arr2_size) {
            if (arr1[i] < arr2[j]) {
                final_array[k++] = arr1[i++];
            }
            else {
                final_array[k++] = arr2[j++];
            }
        }

        while (i < arr1_size) {
            final_array[k++] = arr1[i++];
        }

        while (j < arr2_size) {
            final_array[k++] = arr2[j++];
        }


        //displaying final array
        for (int i = 0; i < final_arr_size; i++) {
            cout << final_array[i] << " ";
        }

        //deleting dynamically allocated memory.
        delete[] arr1;
        delete[] arr2;
        delete[] final_array;

    
    return 0;
}
#include <algorithm>
// ...
// check if arr1 is sorted
bool input_is_sorted = std::is_sorted(arr1, arr1 + arr1_size); 

https://en.cppreference.com/w/cpp/algorithm/is_sorted

当然你最好用std::vector等替换裸指针