2015-12-09 2 views
0

ОК, так что у меня есть этот кусок кода:Операции в пределах одного вектора C++

for(i=0; i<listSize; i++) 
{ 
     for(j=0; j<listSize; j++) 
     { 

       if(i != j) 
       { 
       remainder = numList[i] % numList[j]; 
       } 
       if(numList[i] % numList[j] == 0) 
       { 
        cout<< numList[i] << " " << numList[j]<<endl; 
       } 
     } 
} 

Как я могу выполнять сравнение по модулю без сравнения элемент против себя? Утверждение 1-го случая не достигает этого.

ответ

2
 for(i=0; i<listSize; i++) 
     { 
      for(j=0; j<listSize; j++) 
      { 

       if(i != j) 
       { 
       remainder = numList[i] % numList[j]; 

        if(numList[i] % numList[j] == 0) 
        { 
         cout<< numList[i] << " " << numList[j]<<endl; 
        } 
       } 
      } 
+0

га! решения всегда так просты. thank you – LouieV1994

+0

Знаете ли вы, что не так с вашей версией? – LogicStuff

0

Если номера в numList не являются уникальными, вы должны проверить, если два элемента из списка с различным индексом имеет одинаковое значение. В противном случае вы получите деление на ноль.

for(i=0; i<listSize; i++) 
{ 
    for(j=0; j<listSize; j++) 
    { 
     if(numList[i] != numList[j]) 
     { 
      remainder = numList[i] % numList[j]; 
      if(remainder == 0) 
      { 
       cout<< numList[i] << " " << numList[j]<<endl; 
      } 
     } 
    } 
} 
+0

Могу я вас беспокоить чем-то другим? поэтому скажите, что у меня есть ** numList **, и он содержит (9,6,3,3,2,1). я хочу, чтобы во время цикла, как только мы набрали 9% 3, я хочу поместить 9 в новый вектор ** v1 ** и 3 в ** v2 **, стирая эти цифры из исходного списка – LouieV1994

+0

@ LouieV1994 Please задайте для этого отдельный вопрос. – ciamej

0

так сказать, у меня есть numList, и он содержит (9,6,3,3,2,1). я хочу, чтобы во время цикла, когда мы набрали 9% 3, я хочу поместить 9 в новый вектор v1 и 3 в v2, стирая эти цифры из исходного списка. И повторить процесс каждый раз, когда мода результаты в 0.

у меня есть это, но он выходит из строя:

for(i=0; i<listSize; i++) 
    { 
     for(j=0; j<listSize; j++) 
     { 

       if(i != j) 
       { 
       remainder = numList[i] % numList[j]; 
       if(numList[i] % numList[j] == 0) 
       { 
        //cout<< numList[i] << " " << numList[j]<<endl; 
        v1.push_back(numList[i]); 
        v2.push_back(numList[j]); 

        numList.erase(numList.begin()+i); 
        numList.erase(numList.begin()+j); 

       } 
       } 

     } 
Смежные вопросы