Ejemplo n.º 1
0
int main()
{
  char seq[TAM_BUF];
  int n, i, c;
  Pilha *pil;

  pil = pilha_cria();

  printf("Nao insira espacos para a sequencia a seguir!\n");
  printf("Entre com a sequencia de parenteses e chaves: ");
  n = scanf("%s", seq);
  if (n == 0) {
    printf("A sequencia esta vazia!\n");
    goto saida;
  } else {
    for (i = 0; seq[i] != '\0'; i++) {
      switch(seq[i]) {
      case '(':
	pilha_push(pil, '(');
	break;
      case '{':
	pilha_push(pil, '{');
	break;
      case ')':
	if (pilha_vazia(pil))
	  goto mal_formada;

	c = pilha_pop(pil);
	if (c != '(')
	  goto mal_formada;
	break;
      case '}':
	if (pilha_vazia(pil))
	  goto mal_formada;

	c = pilha_pop(pil);
	if (c != '{')
	  goto mal_formada;
	break;
      default:
	printf("Erro, caracter invalido: %c\n", seq[i]);
	goto saida;
	break;
      }
    }
  }

  if (pilha_vazia(pil)) {
    printf("A sequencia eh bem-formada!\n");
    goto saida;
  }
  
 mal_formada:
  printf("A sequencia eh mal-formada!\n");

 saida:
  pilha_libera(pil);
  return 0;
}
Ejemplo n.º 2
0
void desembarque(Pilha* p){   
   Fila* f = getfila();
   while(!pilha_vazia(p)){
      Mala* m = pilha_pop(p);
      fila_insere(f,m);     
   }
   imprime_fila(f);
   pilha_libera(p);
   fila_libera(f);
   printf("\nDesembarque Realizado com Sucesso!\n");
}
Ejemplo n.º 3
0
/* SEU PROGRAMA - MAIN */
int main() {
	int numero;
	Pilha pilha_matrioskhas;
	/* Leitura da quantidade de elementos da possivel Matrioshka */
	while(scanf("%d", &numero) && numero != 0){
		/* Criacao da pilha de Matrioshkas */
		pilha_cria(&pilha_matrioskhas);
		/* Confirmacao se a pilha eh Matrioshka ou nao */
		if(Matrioshkas(&pilha_matrioskhas,numero)){
			printf(":-) Matrioshka!\n");
		}
		else{
			printf(":-( Tente novamente.\n");
		}
		/* Liberacao da pilha */
		pilha_libera(&pilha_matrioskhas);
	}

	return 0;
}