pero no logro asignar lso valores de *prt a una cadena para despues haceres push (meterlos a mi estructura/pila A") el strtok no lo se usar muy bien , soy nuevo en cadenas y se me complica mucho ._ . todo lo que esta comentado es por que no funciona.. osea deja de funcionar el programa...
por ejemplo (para los que no conozcan la notacion polaca inversa)
mi input es:
5 6 9 + 8 5 *
esto quedaria como
5 11 40
siempre el operador matematico se aplicara a los dos ultimos valores
entonces necesito separar la cadena inicial para saber si es digito o un operador matematico
Código
#include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <conio.h> #include <string.h> #define MAX 100 /* max size of operand or operator */ typedef int stackEntry; typedef struct {stackEntry data[MAX]; int index; }Stack; int isFull(Stack); int isEmpty(Stack); void push(Stack*,stackEntry); stackEntry pop(Stack*); void create(Stack *s){s->index=-1;} int main(void) { Stack A; int type,i; stackEntry k; stackEntry op2; char s[MAX],aux[MAX]; create(&A); /* if(A.index==-1){printf(" Pila Inicializada index: %d" ,A.index);} solo una prueba*/ push(&A,6);push(&A,5);push(&A,7);pop(&A);pop(&A);pop(&A); getche(); { char s2[4] = " \n\t"; char *ptr; /*system("cls"); /* printf( "A stack = %s\n", s );*/ /*strcpy(aux,ptr); i++; printf("\n aux var = %s",aux); /*if(isdigit(*ptr)){ k=atoi(ptr);push(&A,k);} /*if(ptr=='+'){push(&A,pop(&A)+pop(&A));} if(ptr=='*'){push(&A,pop(&A)*pop(&A));} */ /*printf("\npop:%d",A.data[A.index]);*/ return 0; } } int isFull(Stack s){ if (s.index==MAX-1) return 1; else return 0;} int isEmpty(Stack s){ if(s.index==-1) return 1; else return 0; } void push(Stack *s, stackEntry dato) { s->index+=1; s->data[s->index] = dato; printf("\ndato:%d ",dato)/*use este printf para comprobar que mi push y pop funcionaran adecuadamente*/; } stackEntry pop(Stack*s) { return 1; }