Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;如何使用for循环查找重复项 #包括 #包括 使用名称空间std; int*randnum(int*arr,int n){ int*ar=新的int[n/2]; 对于(int i=0;i_C++_Arrays - Fatal编程技术网

C++ c++;如何使用for循环查找重复项 #包括 #包括 使用名称空间std; int*randnum(int*arr,int n){ int*ar=新的int[n/2]; 对于(int i=0;i

C++ c++;如何使用for循环查找重复项 #包括 #包括 使用名称空间std; int*randnum(int*arr,int n){ int*ar=新的int[n/2]; 对于(int i=0;i,c++,arrays,C++,Arrays,问题在这里: #include <iostream> #include <vector> using namespace std; int* randnum(int* arr, int n) { int *ar = new int[n / 2]; for (int i = 0; i < n/2; i++) { ar[i] = rand() % n + 1; } return ar; } bool duplic

问题在这里:

#include <iostream>
#include <vector>
using namespace std;


int* randnum(int* arr, int n) {
    int *ar = new int[n / 2];

    for (int i = 0; i < n/2; i++) {
        ar[i] = rand() % n + 1;
    }

    return ar;
}

bool duplication(int* ar, int size) {

    if (size <= 1) {
        return false;
    }

    for (int i = 0; i <= size; i++) {
        for (int j = i+1; j <= size; j++) {

            if (ar[i] == ar[j]) {
                return true;
            }

            else
                return false;
        }
    }

}

int main() {
    int n;
    while (true) {
        cout << "Please enter a number : ";
        cin >> n;

        int size = n / 2;

        if (n <= 2) {
            cout << "Wrong number!!!" << endl;
            break;
        }

        cout << "Size of random array : " << size << endl;

        int* arr = new int[size];

        cout << endl;
        cout << "[ Array ]" << endl;

        arr = randnum(arr, n);

        cout << endl;

        for (int i = 0; i < size; i++) {
            cout << arr[i] << "\t";
        }
        cout << endl;

        cout << endl;

        if (duplication(arr,size) == true)
            cout << "Duplicates found." << endl;

        if (duplication(arr, size) == false)
            cout << "Duplication not found." << endl;

        cout << endl;
        cout << "-----------------------------------------------------------";
        cout << endl;
    }


    system("pause");
    return 0;
}

天哪!太感谢你了:)我花了很多时间来解决这个问题,太感谢你了第二个问题(第一个问题被掩盖了):外环从数组的末端运行。
i@PeteBecker你说得对,我改变了建议,改为使用
std::nexture\u find
for (int i = 0; i <= size; i++) {
        for (int j = i+1; j <= size; j++) {

            if (ar[i] == ar[j]) {
                return true;
            }

            else
                return false;
        }
    }
bool duplication(int* ar, int size) {
    return (std::adjacent_find(ar, ar + size) != ar + size);
}