массива уникальными числами (с помощью rand и srand). возможно ли подобное с двумерным массивом? На данный момент добился уникальных чисел в строках , но вот в столбцах есть повторения.
Добавлять число в другой временный массив и проверять, есть ли новое псевдорандомное число уже в массиве? Или проверять, если ли в двумерном массиве уже это число. Проходить вложенным циклом слева направо сверху вниз.
я не могу грамотно составить условие и он лезет в неинициализированные ячейки массива
bool arrayHasUniqueValue(int* array, int xSize, int ySize, int number) { for(int i { }; i < xSize; ++i) { for(int j { }; j < ySize; ++j) { if(array[i * xSize + j] == number) { return false; } } } return true; } int main() { const int xSize { 5 }, ySize { 5 }; int array[xSize * ySize] { }; for(int i { }; i < xSize; ++i) { for(int j { }; j < ySize; ++j) { bool numberIsUnique { }; do { int number { rand() }; numberIsUnique = arrayHasUniqueValue(array, i, j, number); if(numberIsUnique) { array[i * xSize + j] = number; } } while(numberIsUnique == false); } } return 0; } На скорую руку такое получилось. Алгоритм 100% можно и нужно написать лучше. Например, цикл do while переделать, чтобы убрать лишний if. Ещё лучше и проще будет на STL.
И почему же?
Много причин, самая первая и простая: arrayHasUniqueValue никак не учитывает сколько элементов в массиве уже заполнено.
В функцию передаётся не xSize и ySize, а i и j.
Да, не обратил внимание.
Обсуждают сегодня