Originariamente inviato da ramy89
Nella pop:
Se p punta all' ultimo elemento inserito, con un pre-decremento restituisci il penultimo inserito, non l' ultimo.
Meglio fare un post-decremento:
La pop, collaudata, dovrebbe essere giusta, in quanto dovrebbe essere chiamata solo in caso sia già stato invocato push(). Quando invochi push, prima copi il valore nella posizione corrente e poi incrementi la posizione; per questo la posizione dell'ultimo valore è quella precedente a quella puntata attualmente.
Che poi ci dovrebbe essere qualcosa per controllare gli errori e le eccezioni, beh su quello hai ragione, ma ci lavorerò in seguito, appena mi riesce di finire il programma per sommi capi
Sai la riga esatta dove avviene il segmentation fault?
E altra cosa: gli argomenti possono anche essere tantissimi? Cioè si può digitare 2+4*6+7 ? Perchè in questo caso devi dare la precedenza agli operatori.
Dovrebbe essere in questa parte di codice
codice:
		if ( isdigit(*argv))
			push(atof(*argv));
Riguardando meglio, penso che la funzione isdigit si aspetta un carattere e non una stringa.

Per quanto riguarda gli argomenti, si, possono essere massimo 100, come nella definizione di MAX_OP; non so come gestire argomenti infiniti poi per usarli nelle funzioni push e pop.
Ad ogni modo, la calcolatrice polacca è leggermente diversa da quella tradizionale.
Se scrivi qualcosa del tipo 2 3 4 + * dovrebbe darti (4 + 3) * 2.
In pratica mette i valori in un pila e li estrai in ordine inverso; estrae il primo, prende l'operatore e fa (primo estratto (operatore) 2)) e lo memorizza di nuovo nella pila, per poi continuare. Un po' grossolana come spiegazione, ma spero si capisca