如何检查用户输入的数组元素是否在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
等替换裸指针
所以这是一个简单的 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
等替换裸指针