Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. 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?

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
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.


Il mio blog: https://piero.dev
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...

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
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


Il mio blog: https://piero.dev
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...

PM Quote