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++ - Problemi restituzione controllo funzione
Forum - C/C++ - Problemi restituzione controllo funzione

Avatar
Saik (Normal User)
Pro


Messaggi: 117
Iscritto: 07/08/2011

Segnala al moderatore
Postato alle 18:20
Domenica, 02/09/2012
Salve a tutti.
La seguente funzione mi da diversi problemi in quanto non restituisce il controllo a main, compilo in Visual c++ 2010
Grazie a tutti. Sono disperato:hail::hail:
Codice sorgente - presumibilmente C#

  1. string expc::converter()
  2. {
  3.         stack<char> temp;
  4.         string result;
  5.         string esp = post;
  6.         int count = 0;
  7.         char current = esp[count];
  8.         temp.push('(');
  9.         esp += ')';
  10.         while(temp.isStackEmpty() == false)
  11.         {      
  12.                 count++;
  13.                 current = esp[count];
  14.                 if(isOperator(current))
  15.                 {
  16.                         char corrente = current;
  17.                         char carattere = temp.pop();
  18.                         while(carattere > corrente)
  19.                         {
  20.                                 result += carattere;
  21.                                 carattere = temp.pop();
  22.                         }
  23.                         temp.push(carattere);
  24.                         temp.push(current);
  25.                 }else
  26.                 {
  27.                         if(current == '(')
  28.                         {
  29.                                 temp.push(current);
  30.                         }else{
  31.                                 if(current == ')')
  32.                                 {
  33.                                         char carattere = temp.pop();
  34.                                         while(carattere != '(')
  35.                                         {
  36.                                                 result += carattere;
  37.                                                 carattere = temp.pop();
  38.                                         }
  39.                                 }else
  40.                                 {
  41.                                         result += current;
  42.                                 }
  43.                         }
  44.                 }
  45.         }
  46.         return result;
  47. }


PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 696
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 16:53
Martedì, 04/09/2012
Salve,

cosi' a occhio, mi sembra una normale funzione, l'unico dubbio e' che forse si trova ad eseguire un ciclo infinito, e che quindi la condizione

(temp.isStackEmpty() == false)

risulti sempre vera.


Ciao.

PM Quote
Avatar
Saik (Normal User)
Pro


Messaggi: 117
Iscritto: 07/08/2011

Segnala al moderatore
Postato alle 15:39
Mercoledì, 05/09/2012
No ho controllato... Il controllo del programma arriva al result in quanto l'algoritmo funziona benissimo e se viene compilato in g++ funge

PM Quote
Avatar
sarbaturino (Normal User)
Pro


Messaggi: 66
Iscritto: 25/04/2011

Segnala al moderatore
Postato alle 17:47
Mercoledì, 05/09/2012
Cosa deve risolvere il tuo algoritmo?

PM Quote
Avatar
Saik (Normal User)
Pro


Messaggi: 117
Iscritto: 07/08/2011

Segnala al moderatore
Postato alle 19:19
Mercoledì, 05/09/2012
l'algoritmo trasforma espressioni dalla notazione infissa a quella postfissa

PM Quote