Ola, exemplo muito basico, mas muito basico mesmo, de uma calculadora com as 4 operacoes basicas feito no Dev-C++ utilizando a linguagem C e tambem o conceito de pilhas. Este programa pede para o usuario digitar dois valores e armazena eles em uma pilha (vetor), depois pede para o usuario informar a operacao desejada, desempilha os valores e armazena eles em variaveis auxiliares, isso poderia ser tirado fora mas pro melhor entendimento preferi deixar assim, feita a operacao e armazenado o resultado na pilha novamente e chamado a funcao que exibe o resultado final./* Name: Calculadora Author: Bolvar Arthur Butzke Date: 23/03/09 21:52 Description: Calculadora. Programa que utilize pilhas para efetuar as operaes bsicas: adio, subtrao, diviso e multiplicao.*//* Bibliotecas de Funes */#include <stdio.h>#include <stdlib.h>/* Constantes */#define MAX 10#define BASE 0/* Variveis */int TOPO=0, OPERACAO=0;float VETOR[MAX], VALOR=0, N1=0, N2=0, RESULTADO=0;/* Funo para inserir elementos na pilha */void EMPILHAR(float VALOR){ if (TOPO == MAX) printf("Buffer OverFlow - Pilha Cheia.\n"); else VETOR[TOPO] = VALOR; TOPO++;}/* Funo para retirar elementos da pilha */float DESEMPILHAR(){ if (TOPO == BASE) printf("Buffer UnderFlow! Pilha Vazia.\n"); else { TOPO--; RESULTADO = VETOR[TOPO]; } return RESULTADO;}/* Funo para efetuar as operaes */void CALCULA(){ int RESULT = 0; if (OPERACAO == 1) { printf("\nOperacao de Adicao\n"); N1 = DESEMPILHAR(); N2 = DESEMPILHAR(); RESULTADO = N1 + N2; printf("\n%f + %f = %f\n",N1,N2,RESULTADO); EMPILHAR(RESULTADO); RESULT = 1; } if (OPERACAO == 2) { printf("\nOperacao de Subtracao\n"); N1 = DESEMPILHAR(); N2 = DESEMPILHAR(); RESULTADO = N1 - N2; printf("\n%f - %f = %f\n",N1,N2,RESULTADO); EMPILHAR(RESULTADO); RESULT = 1; } if (OPERACAO == 3) { printf("\nOperacao de Multiplicacao\n"); N1 = DESEMPILHAR(); N2 = DESEMPILHAR(); RESULTADO = N1 * N2; printf("\n%f * %f = %f\n",N1,N2,RESULTADO); EMPILHAR(RESULTADO); RESULT = 1; } if (OPERACAO == 4) { printf("\nOperacao de Divisao\n"); N1 = DESEMPILHAR(); N2 = DESEMPILHAR(); RESULTADO = N1 / N2; printf("\n%f / %f = %f\n",N1,N2,RESULTADO); EMPILHAR(RESULTADO); RESULT = 1; }// printf("Operacao informada invalida. Operacoes validas sao:\n adicao (+)\n subtracao (-)\n multiplicacao (*)\n divisao (/)\n"); if (RESULT==0) { printf("\nOperacao nao encontrada. \n1 -> Adicao\n2 -> Subtracao\n3 -> Multiplicacao\n4 -> Divisao\nInforme a operacao novamente: "); scanf("%d",&OPERACAO); CALCULA(); } }/* Funo para exibir o resultado */void MOSTRARESULTADO(){ printf("Resultado da operacao e' %f\n",VETOR[BASE]);}/* Funo Principal */int main(){ int AUXILIAR=1; printf("\n Calculadora 1.0\n"); while (AUXILIAR != 0) { printf("\nDigite o valor1: "); scanf("%f",&N1); EMPILHAR(N1); printf("\nDigite o valor2: "); scanf("%f",&N2); EMPILHAR(N2); printf("\n1 -> Adicao\n2 -> Subtracao\n3 -> Multiplicacao\n4 -> Divisao"); printf("\nDigite a operacao: "); scanf("%d",&OPERACAO); CALCULA(); MOSTRARESULTADO(); printf("\nDigite 0 para sair ou 1 para realizar outra operacao: "); scanf("%d",&AUXILIAR); // nencessrio para limpar a pilha aps realizar uma operao, sem isso vai mostrar sempre o resultado da primeira operao. TOPO = BASE; } return 0; }Para entender melhor o conceito de pilhas, pense em uma pilha de pratos, quando voce precisa de um prato voce vai e retira o que esta em cima, quando nao precisa mais, voce coloca ele em cima novamente, assim, sempre o ultimo prato empilhado e o primeiro que sai, leia este post sobre listas encadeadas para saber mais. Olá, depois de um tempo sem postar nada, trago um