Pessoal fiz um programinha com a estrutura de Pilhas, uma calculadora que dentre dela tem varias funçoes. Por exemplo função Fatorial de um numero. Gostaria de saber como faço para chamar a função fatorial dentro do case. Olhem só o programa: #include <stdio.h> #include <stdlib.h> #include<math.h> #define MAX 100 int *p; /* apontar para uma regiao de memoria livre */ int *tos; /* aponta para o topo da pilha */ int *bos; /* aponta para o fundo da pilha */ int fat,n; int *d; void push(float i); float pop(void); int main(void){ int i,fat=1,n; float a, b; char s[80]; p = (int *) malloc(MAX*sizeof(int)); /*obtem memoria da pilha*/ if(!p) { printf("falha de alocacao\n"); exit(1); } tos = p; // recebe endereco do topo da pilha bos = p+MAX-1; // recebe endereco do fundo da pilha printf("Opcoes da CALCULADORA: \n\n"); printf("#########################\n#\t\t\t#\n# + -> para soma\t#\n# "); printf("- -> subtracao\t#\n# "); printf("* -> multiplicacao\t#\n# "); printf("/ -> divisao\t\t#\n#"); printf(" r -> Raiz Quadrada\t#\n#"); printf(" p -> X elevado a Y\t#\n#"); printf(" f -> Fatorial de X \t#\n#"); printf("'s'-> para sair\t#\n#"); printf("\t\t\t#\n#########################\n\n"); printf("\nDigite alguma operacao"); do { printf(": "); gets(s); switch(*s) { case '+': a = pop(); b = pop(); printf("%f\n", a+B); push(a+B);break; case '-': a = pop(); b = pop(); printf("%f\n", b-a); push(b-a);break; case '*': a = pop(); b = pop(); printf("%f\n", b*a); push(b*a);break; case '/': a = pop(); b = pop(); if(a==0) { printf("divisao por 0\n");break; } printf("%f\n", b/a); push(b/a);break; case '.': /* mostra o conteudo do topo da pilha */ a = pop(); push(a); printf("O valor atual no topo da pilha ‚: %f\n", a);break; case 'r': a=pop(); printf("Raiz quadrada : %f\n",pow(a,1/2.0)); push(pow(a,1/2.0));break; case 'p': a=pop(); b=pop(); printf("Potencia : %f\n",pow(a,B)); push(pow(a,B));break; case 'f': a=pop(); printf("Fatorial : %f\n", a=fat); push(fat);break; default: push(atoi(s)); } } while(*s!='s'); } /* poe um elemento na pilha */ void push(float i){ if(p>bos) { printf("Pilha cheia\n"); return; } *p = i; p++; } /* Recupera o elemento do topo da pilha */ float pop(void){ p--; if(p<tos) { printf("Pilha vazia\n"); return 0; } return *p; } /* Função Fatorial da pilha */ int fat(int n){ int f=1; while(n!=0){ f*=n; n--; }return f; }