Массив со строками неповторяющихся чисел от 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, заполненный случайным образом»
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; } }
Объяснение кода листинга программы
В этом коде:
- Создается массив
arrTmp
размером 8, заполненный нулями. - В цикле
for
перебираются индексы от 0 до 7. - Внутри цикла
for
создается переменнаяtmp
типаint
, которая инициализируется случайным числом от 0 до 7 с помощью функцииrand()
. - Далее, в цикле
do-while
, проверяется, что элемент массиваarrTmp
с индексомtmp
равен текущему значению переменнойk
. Если это так, то генерация случайного числа повторяется. - Если элемент массива
arrTmp
с индексомtmp
не равен текущему значению переменнойk
, то в этот элемент записывается текущее значение переменнойk
. - Затем, в массив
Population
записывается значениеtmp+1
. - По завершении цикла
for
выводится сообщение. Таким образом, в результате выполнения этого кода, в массивеPopulation
будут храниться строки, состоящие из неповторяющихся чисел от 1 до 8, заполненные случайным образом.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д