|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.11.2017, 20:13 | #1 |
Регистрация: 20.10.2017
Сообщений: 3
|
Заполнить матрицу уникальными случайными числами. Помогите правильно составить алгоритм кода. С++
Задача состоит вот в чем: надо заполнить ДВУМЕРНЫЙ массив УНИКАЛЬНЫМИ случайными числами (чтобы числа не повторялись).
С одномерным все довольно просто так как там одна строчка, а вот с двумерным у меня возникли проблемы, вот код, первая строка заполняется уникальными, но при окончании итерации цикла отвечающего за строки, когда переходит на новую строку, он не сравнивает с предыдущим элементом (тот который в первой строке), кто знает ответьте. Спасибо! #include<iostream> #include<ctime> using namespace std; void main() { setlocale(LC_ALL, "rus"); srand(time(NULL)); const int ROWS = 3; const int COLS = 3; int arr[ROWS][COLS]; bool alreadyThere; for (int i = 0; i < ROWS; ) { for (int j = 0; j < COLS; ) { alreadyThere = false; int newRandomValue = rand() % 20; for (int y = 0; y < j; y++) { if (arr[i][y] == newRandomValue) { alreadyThere = true; break; } } if (alreadyThere != true) { arr[i][j] = newRandomValue; j++; } } i++; } for (int i = 0; i < ROWS; i++) { for (int j = 0; j < COLS; j++) { cout << arr[i][j] << " "; } cout << endl; } } |
23.11.2017, 23:17 | #2 |
Форумчанин
Регистрация: 08.11.2017
Сообщений: 347
|
Задачка мозголомная
Код:
- работать как с одномерным массивом - заполнить нулями и новый элемент проверять циклами которые проходят по всему массиву Можно ещё сделать функцию, которая принимает указатель на строку матрицы, проверяемую длину и проверяемый элемент. Тогда цикл проверки будет отделён от цикла создания и не так сильно будет выкручивать мозг. |
24.11.2017, 08:54 | #3 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Like this?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
24.11.2017, 09:52 | #4 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
или, можно ещё так - у Вас матрица 3X3, а случайные числа от 0 до 20 поступаем так. 1) заполняем одномерный массив a[20] числами от 0 до 20 2) перемешиваем массив (см. на форуме тему "как не надо тасовать карты", например, тыц) или банальным std::shuffle() 3) заполняем матрицу в циклах по строкам/столбцам беря значения по порядку из перемешанного массива. всё. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[C++] Помогите заполнить матрицу случайными числами | bekabeka | Помощь студентам | 1 | 03.03.2017 12:09 |
Заполнить матрицу случайными числами... | DashGames | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 12.02.2014 22:13 |
задача на паскале: Матрицу размером 10Х10 заполнить случайными трехзначными числами. Отсортировать по строкам. | докторлинус | Помощь студентам | 8 | 29.10.2013 09:45 |
заполнить очередь случайными числами(кусок кода есть) | Teropan231 | Помощь студентам | 3 | 11.10.2013 23:46 |
получить прямоугольную матрицу A,заполнить натуральными случайными числами, записать наибольший общий делитель двух чисел! | AntonKalinin01 | Помощь студентам | 0 | 26.05.2013 07:07 |