Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Ciclo infinito
Forum - C/C++ - Ciclo infinito

Avatar
edo42 (Member)
Pro


Messaggi: 102
Iscritto: 30/07/2009

Segnala al moderatore
Postato alle 19:55
Venerdì, 14/08/2009
Ho un problema su questo codice:
Codice sorgente - presumibilmente C/C++

  1. for(int a = 0; a < 50; a++)
  2.                         {
  3.                                 int b;
  4.                                 if(arraynum[++a] != "0")
  5.                                 {
  6.                                         --a;
  7.                                         b=a;
  8.                                 }
  9.                                 else if(arraynum[a] == "0")
  10.                                 {
  11.                                         continue;
  12.                                 }
  13.                                 else if(operatore[a-1] == "0")
  14.                                 {
  15.                                         break;
  16.                                 }
  17.                                 if(operatore[a-1] == "*")
  18.                                 {
  19.                                         // 1.1.4.0 Moltiplico...
  20.                                         Multiply(Toint(arraynum[b]), Toint(arrayden[b]), Toint(arraynum[a+1]), Toint(arrayden[a+1]));
  21.                                         // 1.1.4.0 Cancello dati usati e metto i risultati a posto
  22.                                         arraynum[a+1] = "0";
  23.                                         arrayden[a+1] = "0";
  24.                                         arraynum[b] = Tostring(risultatonum);
  25.                                         arrayden[b] = Tostring(risultatoden);
  26.                                 }
  27.                                 if(operatore[a] == "/")
  28.                                 {
  29.                                         // 1.1.4.0 Moltiplico...
  30.                                         Divide(Toint(arraynum[a]), Toint(arrayden[a]), Toint(arraynum[a+1]), Toint(arrayden[a+1]));
  31.                                         // 1.1.4.0 Cancello dati usati e metto i risultati a posto
  32.                                         arraynum[a+1] = "0";
  33.                                         arrayden[a+1] = "0";
  34.                                         arraynum[a] = Tostring(risultatonum);
  35.                                         arrayden[a] = Tostring(risultatoden);
  36.                                 }
  37.                                
  38.                         }


else if(operatore[a-1] == "0") break; dovrebbe fare uscire il programma dal ciclo, ma mettendo dei punti di interruzione, pare che questo pezzo di codice non venga eseguito non capisco il motivo.
Uso gcc.
Sapete spiegarmi perchè non viene mai eseguito e poi genera errore perchè va logicamente fuori dalli indice dell'array?


Se passi a mac da win non sai cosa ti trovi, ma stai sicuro che non tornerai mai indietro
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6109
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 2:33
Domenica, 16/08/2009
Posta tutto il sorgente; o almeno l'intero file. Questo e' solo un pezzo.

Prova con:

Codice sorgente - presumibilmente C/C++

  1. else if(operatore[a-1] == '0') break;



Apice singolo invece che doppio-apice.


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
edo42 (Member)
Pro


Messaggi: 102
Iscritto: 30/07/2009

Segnala al moderatore
Postato alle 7:16
Domenica, 16/08/2009
Ho risolto il problema; per fare prima e non inserire i valori tutte le volte ho tolto cin>>input; e ho messo input = "il valore"; in questo modo il while esterno che non ho riportato nel codice sopra) continuava a girare e a dare lo stesso input. Input non era mai uguale a "fine" e allora continuava a calcolare all'infinito senza fermarsi.

P.S. Credo che un file intero non ci stia dato che sono 785 righe di codice precise...


Se passi a mac da win non sai cosa ti trovi, ma stai sicuro che non tornerai mai indietro
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6109
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 3:16
Lunedì, 17/08/2009
E' possibile allegare files di 2mb tramite il sito; guarda lo screenshot.


pierotofy ha allegato un file: allega.jpg (42370 bytes)
Clicca qui per guardare l'immagine


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
edo42 (Member)
Pro


Messaggi: 102
Iscritto: 30/07/2009

Segnala al moderatore
Postato alle 7:51
Lunedì, 17/08/2009
Grazie non l'avevo mai notato...


Se passi a mac da win non sai cosa ti trovi, ma stai sicuro che non tornerai mai indietro
PM Quote