2015-11-06 1 views
0
for(i=0;i<np;i++){ 
    cin >> temp_str; 
    pos = find(names.begin(), names.end(), temp_str) - names.begin(); 
    cin >> total >> ppl; 
    giving.push_back(make_pair(pos, total)); 
    amt_getting = total/ppl; 
    bal[pos] += total - (amt_getting * ppl); 

    for(j = 0; j < np - 1; j++){ /**** Error due to this loop's condition******/ 
     cin >> temp_str; 
     pos = find(names.begin(), names.end(), temp_str) - names.begin(); 
     bal[pos] += amt_getting; 
    } 

Je reçois une erreur d'exécution dans mon programme. C'est le fragment de code où se produit le RTE. Chaque fois que je change la condition j < np-1 en j < np l'erreur est corrigée. Quel est le problème? Je n'ai même pas utilisé de tableau à l'intérieur de la deuxième boucle for pour segfault.Erreur d'exécution dans la boucle imbriquée C++

+0

Qu'est-ce que 'np'? Quelle est sa valeur? – NathanOliver

+0

'i' et' j' sont-ils 'int' ou' unsigned int' ou ...? – PinkFloyd

+1

Veuillez publier un code pertinent et valide avec la déclaration d'erreur. –

Répondre

1

Vous n'êtes pas mentionner ce genre d'erreur d'exécution, cette conjecture est ...

Avec np - 1, votre code ne correspond pas à l'entrée; il y a un non-entier de plus dans le flux.

Cela signifie que cin >> total >> ppl échoue, ppl devient zéro et total/ppl est une division par zéro.