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

    Calcolatrice Postfix

    Salva a tutti,
    dovrei modificare ,all'interno di un codice,la funzione emitter,che in base al token letto esegue le rispettive operazioni. In particolare in caso di NUM dovrei inserire i numeri su una pila es:
    case NUM:
    push(puntatore alla pila,valore da salvare)
    p++ incremento il puntatore
    in qsto modo ogni volta che si tratta di un numero la pila dovrebbe riempirsi GIUSTO??
    successivamente dovrei eseguire un'operazione per esempio la somma,e qui casca l'asino: come faccio a sommare i due numeri che ho salvato precedentemente sulla pila??
    case '+':??

    Grazie mille per l'attenzione..=) aspetto una risposta

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Leggi progressivamente l'input:
    -se leggi un numero lo metti nella pila
    -se è un'operazione (+, -, *, /, quello che vuoi) estrai i due numeri che hai precedentemente messo nella pila applichi l'operazione e metti il risultato nella pila...

    All'inizio lo stack deve avere 0 elementi e alla fine 1 elemento che sarà il tuo risultato, nel caso non ci sia un solo elemento alla fine dei calcoli l'input era malformato...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Grazie la mia idea era appunto qsta. Ma dal punto di vista del codice vorrei sapere se è esatto fare:
    case NUM:
    push(&pila,valore);
    p++;
    printf("stampa numeri");
    se stampa i numeri vuol dire k la pila si è riempita??

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Non capisco cosa vuoi dire...

    In ogni caso se si tratta di C:
    -case esiste solo al''interno di uno switch
    -non esiste alcun modo per fare
    codice:
    case NUM:
    in quando il costrutto switch/case accetta solo numeri e caratteri costanti....
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Hai ragione scusami non sono stata chiara. Si tratta di C il codice è il seguente:
    codice:
    switch(t){
        case NUM:
           pila_vuota(&stk);
            push(&stk,tval); //prima inserisco i valori nella pila
    	printf("%d",tval);//poi li stampo 
    		break;
      {
          operando = pop(&stk);   //carico i valori in cima alla pila
          operando1 = pop(&stk);
        case '+':
             ris = operando1 + operando;
             push(&pila,ris); // carico il risultato in cima alla pila
             ris = pop(&stk); //
             return ris;
             break;

    qndo eseguo l'operazione il programma mi da errore =(

  6. #6

    Moderazione

    Un paio di appunti:
    • il linguaggio di riferimento va sempre indicato, anche nel titolo, altrimenti non si capisce di cosa si sta parlando; stesso discorso per il codice che dà problemi;
    • dire "il programma mi da errore" è troppo generico - è un errore di compilazione? un errore a runtime? che cosa dice esattamente il messaggio di errore?
    • evitiamo le abbreviazioni da SMS... i post hanno un limite di 20000 caratteri, non c'è motivo di lesinare sulle lettere.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Ah scusami allora riformulo il mio problema=)

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 © 2025 vBulletin Solutions, Inc. All rights reserved.