2015-08-27 2 views
-4

У меня есть фрагмент кода, где на всю жизнь я не могу понять, почему цикл проскакивает после первого прогона.C++ Loop Skips после первого запуска

if (*itr2 != 0) 
    { 
     int s = *itr2; 
     //cout << s << endl; 
     k = k + s; 
     cout << "X: " << x << " K: " << k << " S: " << s << endl; 
      for (int i = x; i < s; i++) 
      { 
       cout << "test" << endl; 
       string value = allSub[i]; 
       cout << value << endl; 

       vector<string>::iterator it2; 
       vector<string>::iterator it3; 
       it2 = find(subCode.begin(), subCode.end(), value); 
       int pos = distance (subCode.begin(), it2); 
       adMatrix [pos][pos] ++; 
        for (int v = 0; v < i; v++) 
        { 
         string value2 = allSub[v]; 
         cout << "does it run: " << value2 << endl; 
         it3 = find(subCode.begin(), subCode.end(), value2); 
         int pos2 = distance (subCode.begin(), it3);       
         adMatrix [pos][pos2] ++; 
         adMatrix [pos2][pos] ++; 
        } 
       x = i; 
      } 
     x++; 
    } 

Предполагая, что x и k были первоначально инициализированы как 0. Выходной сигнал выглядит следующим образом:

X: 0 K: 4 S: 4 
test 
CSCI203 
test 
CSCI235 
does it run: CSCI203 
test 
CSCI222 
does it run: CSCI203 
does it run: CSCI235 
test 
CSCI205 
does it run: CSCI203 
does it run: CSCI235 
does it run: CSCI222 
X: 4 K: 7 S: 3 
X: 5 K: 11 S: 4 
X: 6 K: 13 S: 2 
X: 7 K: 17 S: 4 

Почему значения после x = 4 не проходят через цикл for?

+2

Отладчик очень помогает в проверке таких проблем. –

+0

Что такое 'i Bathsheba

ответ

0
for(int i = x; i < s; i++) { 

Проверьте последние итерации: s меньше, чем x, поэтому я получаю инициализацию выше, чем s, и цикл никогда не выполняется.

+0

спасибо за свежую пару глаз. – seelani

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