Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2010, 02:26   #1
Alex430
Новичок
Джуниор
 
Регистрация: 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;
}
}
Не могу понять, в чем проблема с обнулением большого числа элементов...
Alex430 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка двумерного массива AlexXXX12389 Помощь студентам 0 17.10.2010 10:32
Сортировка двумерного массива Расим Помощь студентам 7 15.12.2009 22:29
Вывод двумерного массива pancho Общие вопросы Delphi 10 25.01.2009 23:31