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);
}