|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Bannato
Iscritto dal: Oct 2006
Messaggi: 170
|
[C] Esercizio con stack
Salve, ho cercato di implementare il seguente esercizio
/*Scrivere una funzione per calcolare il valore di un’espressione aritmetica espressa come stringa in forma postfissa contenente i simboli 0, 1, …, 9, +, *.*/ Dovrebbe essere corretto ma mi da una miriade di errori, cerco qualcuno che mi aiuti a farlo andare. grazie in anticipo. Codice HTML:
#include<stdio.h> #include<stdlib.h> #define FULL 100 #define EMPTY 0 typedef char data; typedef struct elem{ data d; struct elem *next; }; typedef struct elem elem; typedef struct stack{ int cnt; elem *top; }; typedef struct stack stack; void inizializza(stack *stk); void push(data d,stack *stk); data pop(stack *stk); int valuta_postfissa(char *ptr_p,stack *stk); int main(void){ char p[]={2+3}; stack s; inizializza(&s); printf("Il risultato dell'operazione %s e' il seguente %d",p,valuta_postfissa(p,&s)); system("PAUSE"); } void inizializza(stack *stk){ stk->cnt=0; stk->top=NULL; } void push(data d,stack *stk){ elem *p; p=malloc(sizeof(elem)); p->d=d; p->next=stk->top; stk->top=p; stk->cnt++; } int valuta_postfissa(char *ptr_p,stack *stk) { char c; while (c = *ptr_p++) { /* operando */ if ((c != ‘+’)&&(c != ‘*’)) { push(c-’0’,&stk); } /* operatore */ else { int op1, op2; op2 = pop(&stk); op1 = pop(&stk); switch (c) { case ‘+’: push(op1+op2,&stk); break; case ‘*’: push(op1*op2,&stk ); break; } } } return pop(&stk); } |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Questo è errato:
char p[]={2+3}; deve essere: char p[]="2+3"; |
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Oct 2006
Messaggi: 170
|
Mi dice sempre che non è palindorma
|
|
|
|
|
|
#4 |
|
Bannato
Iscritto dal: Oct 2006
Messaggi: 170
|
NOn palindroma, non va
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Hai sbagliato thread...questo è quello sulle operazioni...
|
|
|
|
|
|
#6 |
|
Bannato
Iscritto dal: Oct 2006
Messaggi: 170
|
Eh si me ne sono accorto
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:24.



















