C/C++

Что не так с кодом C++ ?

Код который пишет массив из 10 случайных чисел которые не повторяются.
Код не работает, что не так?
 #include 
#include
using namespace std;

void randarr(int arr[], int size); void coutarr(int arr[], int size);


void main()
{
srand(time(NULL));
int const SIZE = 10;
int arr[SIZE];
randarr(arr, SIZE);
coutarr(arr, SIZE);
}

void randarr(int arr[], int size)
{
for (int i = 0; i < size; i++)
{
arr[i] = rand() % 10;
}

bool same;
for (int i = 0; i < size; )
{
same = false;
for (int c = 0; c < size; c++)
{
if (arr[i] == arr[c])
{
same = true;
}
}
if (same)
{
arr[i] = rand() % 10;
}
if (!same)
{
i++;
}
}
}

void coutarr(int arr[], int size)
{
for (int i = 0; i < size; i++)
{
cout
В данном коде в функции randarr есть ошибка в условии вложенного цикла. Когда i и c равны, сравнение if (arr[i] == arr[c]) всегда будет истинным, что приводит к тому, что значение элемента массива перезаписывается случайным числом. Это может привести к тому, что в массиве будут повторяющиеся числа.

Чтобы исправить эту ошибку, можно изменить условие сравнения на if (arr[i] == arr[c] && i != c), чтобы исключить случай, когда i и c равны.

Исправленный код будет выглядеть так:
 #include   
#include

using namespace std;

void randarr(int arr[], int size);
void coutarr(int arr[], int size);

int main()
{
srand(time(NULL));
const int SIZE = 10;
int arr[SIZE];
randarr(arr, SIZE);
coutarr(arr, SIZE);
return 0;
}

void randarr(int arr[], int size)
{
for (int i = 0; i < size; i++)
{
arr[i] = rand() % 10;
}

bool same;
for (int i = 0; i < size;)
{
same = false;
for (int c = 0; c < size; c++)
{
if (arr[i] == arr[c] && i != c) //исправление
{
same = true;
}
}
if (same)
{
arr[i] = rand() % 10;
}
if (!same)
{
i++;
}
}
}

void coutarr(int arr[], int size)
{
for (int i = 0; i < size; i++)
{
cout
Сергей Кислицин
Сергей Кислицин
4 835
Лучший ответ
 #include 
#include
#include

using namespace std;

void randarr(vector &arr) {
for (int i = 0; i < arr.size(); ++i) { arr[i] = i; }
random_shuffle(arr.begin(), arr.end());
}

void coutarr(vector arr) {
for(auto v: arr) { cout
#include <iostream>
#include <numeric>
#include <random>
#include <algorithm>
using namespace std;
int main(){
const int n=10; int a[n]; iota(a,a+n,0);
random_device rd; mt19937 g(rd());
shuffle(a,a+n,g); for(int &i:a)cout<<i<<' ';}
РК
Роман Ким
88 075
void coutarr(int arr[], int size)