|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.10.2010, 02:26 | #1 |
Новичок
Джуниор
Регистрация: 18.10.2010
Сообщений: 1
|
Обнуление определенной части двумерного массива
Есть cnt_0 - число элементов массива, которые подлежат обнулению. p[i][j] - массив, сформированный динамически с рахмерами n на m и забит рандомными числами от 0 до 9.
Данный код обнуляет приближенное к cnt_0 число значений массива p. (Приближенное т.к. возможны повторения случайных i и j) Обнуление без ошибок происходит при размерах матрицы до 100 на 100 элементов, иногда выполняется и при немного больших размерах матрицы. srand((unsigned)(time(NULL))); for(double k=0; k<=cnt_0; k++) { i=int((double)rand()/RAND_MAX*n); j=int((double)rand()/RAND_MAX*m); p[i][j]=0; } Код ниже, обнуляет cnt_0-1 элементов матрицы при ее небольших размерах. pair <int, int> pr; vector <pair<int,int>> v_pr; vector <pair<int, int>>::iterator v_it; for(double k=0; k<cnt_0; k++) { if(b) //первый проход с обнулением, вектор пар пока пуст { i=int((double)rand()/RAND_MAX*n); j=int((double)rand()/RAND_MAX*m); pr.first = i; pr.second = j; v_pr.push_back(pr); p[i][j]=0; b=!b; } else //последующие проходы с генерацией новых уникальных координат для обнуления { i=int((double)rand()/RAND_MAX*n); j=int((double)rand()/RAND_MAX*m); for(v_it=v_pr.begin(); v_it!=v_pr.end(); v_it++) { if(v_it->first==i && v_it->second==j) { i=int((double)rand()/RAND_MAX*n); j=int((double)rand()/RAND_MAX*m); v_it = v_pr.begin(); } } pr.first = i; pr.second = j; v_pr.push_back(pr); p[i][j]=0; } } Не могу понять, в чем проблема с обнулением большого числа элементов... |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сортировка двумерного массива | AlexXXX12389 | Помощь студентам | 0 | 17.10.2010 10:32 |
Сортировка двумерного массива | Расим | Помощь студентам | 7 | 15.12.2009 22:29 |
Вывод двумерного массива | pancho | Общие вопросы Delphi | 10 | 25.01.2009 23:31 |