Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C++] Calcolo espressione algebrica

    Salve a tutti!

    Avrei bisogno di capire dove siano gli errori in questo codice in cui cerco di calcolare un'espressione algebrica tramite l'utilizzo di stack. Non è necessario avere delle precedenze sugli operatori visto che ogni operazione è racchiusa da parentesi, ad esempio:
    ((6+2)/3*(6+4))
    Il problema è che eseguendo il codice il risultato è sempre 1
    Concettualmente mi sembra ok, ma mi sa che in pratica c'è qualche errore logico che non vedo.

    Funzioni per il calcolo dell'espressione

    Ah e lo stack l'ho implementato io, ma è funzionante al 100%

    Stack implementato

    Ringrazio in anticipo gli eventuali aiuti

  2. #2
    SizeStacks ora come ora è una funzione inutile, perché le due dimensioni sono passate per valore e non per riferimento, di conseguenza le dimensioni originarie rimarranno sempre uguali a 0.

    Inoltre quando controlli se ci sono parentesi assegni ogni volta a bracketExpr '\0' invece di accodarglielo(anche se non è necessario).

    P.S. Per quanto riguarda lo stack sarebbe una buona idea seguire la rule of five.

  3. #3
    Originariamente inviato da lovesemiramide
    SizeStacks ora come ora è una funzione inutile, perché le due dimensioni sono passate per valore e non per riferimento, di conseguenza le dimensioni originarie rimarranno sempre uguali a 0.

    Inoltre quando controlli se ci sono parentesi assegni ogni volta a bracketExpr '\0' invece di accodarglielo(anche se non è necessario).

    P.S. Per quanto riguarda lo stack sarebbe una buona idea seguire la rule of five.
    Corretto ciò che mi hai detto ed effettivamente prima non dava dimensioni

    Però continua a non funzionare.. Altre idee?

    La mia logica è questa: leggi tutta la stringa dell'espressione, conta il numero degli operandi e degli operatori per costruire i due stack "principali", quando trova una parentesi copia il contenuto in un'altra stringa e metto nello stack degli operandi quello che sarà il risultato della mini espressione tra parentesi richiamando la funzione ricorsivamente.. A me non sembra sbagliato come ragionamento, purtroppo manca qualcosa nel codice e non capisco cosa

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.