Привет, У меня возникла проблема с реализацией алгоритма чередования. У меня также есть проблема загрузки 30000 записей в одном векторе, я пробовал это, но он не работает.реализовать алгоритм чередования C++
Программа должна объявлять переменные для хранения ОДНОГО ЗАПИСИ за раз. Он должен прочитать запись и обработать ее, затем прочитать другую запись, и так далее. Каждый процесс должен игнорировать записи, которые «принадлежат» другому процессу. Это можно сделать, отслеживая количество записей и определяя, должна ли текущая запись обрабатываться или игнорироваться. Например, если есть 4 процесса (numProcs = 4), процесс 0 должен работать с записями 0, 4, 8, 12, ... (если считать, что мы подсчитываем от 0) и игнорировать все остальные записи между ними. «
Residence res;
int numProcs = 4;
int linesNum = 0;
int recCount = 0;
int count = 0;
while(count <= numProcs)
{
while(!residenceFile.eof())
{
++recCount;
//distancess.push_back(populate_distancesVector(res,foodbankData));
if(recCount % processIS == linesNum)
{
residenceFile >> res.x >>res.y;
distancess.push_back(populate_distancesVector(res,foodbankData));
}
++linesNum;
}
++count;
}
Обновить код
Residence res;
int numProcs = 1;
int recCount = 0;
while(!residenceFile.eof())
{
residenceFile >> res.x >>res.y;
//distancess.push_back(populate_distancesVector(res,foodbankData));
if (recCount == processId)//process id
{
distancess.push_back(populate_distancesVector(res,foodbankData));
}
++recCount;
if(recCount == processId)
recCount = 0;
}
код обновления Sudo
while(!residenceFile.eof())
{
residenceFile >> res.x >>res.y;
if (recCount % numProcs == numLines)
{
distancess.push_back(populate_distancesVector(res,foodbankData));
}
else
++numLines
++recCount
}
Обновленный код кажется запутанным (и запутанным); это 'numProcs' * количество процессов * или * идентификатор процесса *? – Beta
это processID –
jsut Я хочу видеть, что обновленная логика правильная? –