Массив со строками неповторяющихся чисел от 1 до 8, заполненный случайным образом - C (СИ)

Формулировка задачи:

Всем доброго времени суток! Прошу указать мне на ошибку. Стою на месте, не могу никак сдвинуться. Нужно, чтобы в каждой строке случайным образом были расставлены числа от 1 до 8. И самое главное, чтобы они не повторялись.
int main()
{
    srand(time_t(NULL)); 
    int N = 8; 
    int **Population = new int*[N];
    for (int i = 0; i<N; i++) Population[i] = new int[N];
    int q = 0;
    bool flag;
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) {
            q = rand() % N;
            flag = 1;
            for (int b = 0; b < j; b++) {
 
                if (Population[b][i] == q)
                    flag = 0;
                if (flag)
                    Population[j][i] = q;
                else j--;
            }
        }
    }
 
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) {
            cout << Population[i][j] << ' ';
        }
        cout << "\n";
    }
       for (int i = 0; i<N; i++) delete[]Population[i]; 
       delete[]Population;
       return 0;
}

Код к задаче: «Массив со строками неповторяющихся чисел от 1 до 8, заполненный случайным образом - C (СИ)»

textual
int arrTmp[8]={0};
for(int i=0;k=1; i<8;i++,k++)
 {
   for(j=0;j<8;j++)
    {
     int tmp;
      do{
        tmp=rand()%8;
         } while(arrTmp[tmp]==k);
            arrTmp[tmp]=k;
        Population[i][j]=tmp+1;
    
    }     
}

14   голосов, оценка 4.357 из 5


СОХРАНИТЬ ССЫЛКУ