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

Узнай цену своей работы

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

Всем доброго времени суток! Прошу указать мне на ошибку. Стою на месте, не могу никак сдвинуться. Нужно, чтобы в каждой строке случайным образом были расставлены числа от 1 до 8. И самое главное, чтобы они не повторялись.
Листинг программы
  1. int main()
  2. {
  3. srand(time_t(NULL));
  4. int N = 8;
  5. int **Population = new int*[N];
  6. for (int i = 0; i<N; i++) Population[i] = new int[N];
  7. int q = 0;
  8. bool flag;
  9. for (int i = 0; i < N; i++) {
  10. for (int j = 0; j < N; j++) {
  11. q = rand() % N;
  12. flag = 1;
  13. for (int b = 0; b < j; b++) {
  14. if (Population[b][i] == q)
  15. flag = 0;
  16. if (flag)
  17. Population[j][i] = q;
  18. else j--;
  19. }
  20. }
  21. }
  22. for (int i = 0; i < N; i++) {
  23. for (int j = 0; j < N; j++) {
  24. cout << Population[i][j] << ' ';
  25. }
  26. cout << "\n";
  27. }
  28. for (int i = 0; i<N; i++) delete[]Population[i];
  29. delete[]Population;
  30. return 0;
  31. }

Решение задачи: «Массив со строками неповторяющихся чисел от 1 до 8, заполненный случайным образом»

textual
Листинг программы
  1. int arrTmp[8]={0};
  2. for(int i=0;k=1; i<8;i++,k++)
  3.  {
  4.    for(j=0;j<8;j++)
  5.     {
  6.      int tmp;
  7.       do{
  8.         tmp=rand()%8;
  9.          } while(arrTmp[tmp]==k);
  10.             arrTmp[tmp]=k;
  11.         Population[i][j]=tmp+1;
  12.    
  13.     }    
  14. }

Объяснение кода листинга программы

В этом коде:

  1. Создается массив arrTmp размером 8, заполненный нулями.
  2. В цикле for перебираются индексы от 0 до 7.
  3. Внутри цикла for создается переменная tmp типа int, которая инициализируется случайным числом от 0 до 7 с помощью функции rand().
  4. Далее, в цикле do-while, проверяется, что элемент массива arrTmp с индексом tmp равен текущему значению переменной k. Если это так, то генерация случайного числа повторяется.
  5. Если элемент массива arrTmp с индексом tmp не равен текущему значению переменной k, то в этот элемент записывается текущее значение переменной k.
  6. Затем, в массив Population записывается значение tmp+1.
  7. По завершении цикла for выводится сообщение. Таким образом, в результате выполнения этого кода, в массиве Population будут храниться строки, состоящие из неповторяющихся чисел от 1 до 8, заполненные случайным образом.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы