int main ()
{
	char expressao[10000];
	char *pega;
	PILHA_DINAMICA *pilha = criar_pilha();
	
	fgets(expressao,10000,stdin);
	
	MostrarPilha(pilha);
	pega = strtok(expressao, " ");
	
	while(pega!=NULL)
	{
		if(*pega== 'C')
		{
			clear(&pilha);
		}
		else identifica(pilha,pega);
		MostrarPilha(pilha);
		pega = strtok(NULL, " ");
	}
	//system("PAUSE");
}
Example #2
0
//funcao principal
//aqui serão feitas as intervenções com io usuário
int main ()
{
pilha p;//cria uma pilha chamada "p" vazia
p = criar_pilha();//define a estrutura de "p" e aplica p.topo=N-1 (contido em Criar_Pilha)
char nomes[50]; //string para receber o que o usuário digita 
while (pilha_cheia(p)==false)//enquanto a pilha não estiver cheia faça(...)
{
printf ("Digite um nome: ");
scanf("%s", nomes);
push(p,nomes);
/*leva para empilhar "p" e "nomes", que na função "Push"
recebe o nome de "val"*/
}
//desempilhando
while (pilha_vazia(p)==false)
{
//consulta a pilha
top(p,nomes);
printf("Vou desempilhar: %s\n", nomes);//exibe o nome desempilhado
pop(p);//desempilha 1
//o "p.topo" mostra o valor atual do índice
}
system("Pause");
}
Example #3
0
int main( ) {

	PILHA_DINAMICA *pilha = (PILHA_DINAMICA*)malloc(sizeof(PILHA_DINAMICA));
	criar_pilha(pilha);

	char entrada[1];
	int controle = 1, n1=0, n2=0, resultado=0;

	while(entrada[0] != 'q') {

		fgets(entrada,10,stdin);

		if(entrada[0] >= '0' && entrada[0] <= '9') {
			if (pilha->topo==NULL) puts("-");
			pilha->topo->item += ( (controle)*(entrada[0]) );
		}			

		switch(entrada[0]){ 

			case 'E':
				push(0,pilha);
				controle=1;
				break;

			case '+':
				pop(&n1,pilha);
				pop(&n2,pilha);
				resultado = n1+n2;
				push(resultado,pilha);
				controle=1;
				break;
				

			case '-':
				pop(&n1,pilha);
				pop(&n2,pilha);
				resultado = n1-n2;
				push(resultado,pilha);
				controle=1;
				break;

			case '*':
				pop(&n1,pilha);
				pop(&n2,pilha);
				resultado = n1*n2;
				push(resultado,pilha);
				controle=1;
				break;
			case '/':
				pop(&n1,pilha);
				pop(&n2,pilha);
				resultado = n1/n2;
				push(resultado,pilha);
				controle=1;
				break;

		}

		controle *= 10;

		imprimir_pilha(pilha);

	}

	return 0;

}