titulo
/*Faça um programa que leia um arquivo de entrada, execute todos os
*comandos presentes nesse arquivo e gere um arquivo de saída, no formato
*definido anteriormente no desafio.
*/
/* Definições de movimento:
*Os comandos válidos para o braço de robô manipular os blocos são listados
*a seguir. Usa-se a para indicar o bloco em movimento a e b como bloco de
*referência.
*Mover a acima b: move o bloco a para cima do bloco b retornando
*eventuais blocos que já estiverem sobre a ou b para as suas posições
*originais.
*Mover a topo b: coloca o bloco a no topo do monte onde está o bloco b
*retornando eventuais blocos que já estiverem sobre a às suas posições
*originais.
*Empilhar a acima b: coloca o bloco a juntamente com todos os blocos que
*estiverem sobre ele em cima do bloco b, retornando eventuais blocos que
*já estiverem sobre b as suas posições originais.
*Empilhar a topo b: coloca o bloco a juntamente com todos os blocos que
*estiverem sobre ele no topo do monte onde está o bloco b.
*Encontrar maior: encontra o maior elemento da pilha mais alta e o
*devolve para a posição inicial.
*Sair: termina a execução.
*Qualquer comando no qual a = b ou no qual a e b estejam na mesma pilha
*de blocos é um comando ilegal e deve ser ignorado, não alterando a
*configuração dos blocos.
*RESTRIÇÃO:
*Qualquer comando no qual a = b ou no qual a e b estejam na mesma pilha
*de blocos é um comando ilegal e deve ser ignorado, não alterando a
*configuração dos blocos.
*/
#include
#include
#define MAX 5
struct pilha{ int entrada[MAX]; // numero de blocos int mover_acima[1]; int mover_topo[1]; int empilhar_acima[1]; int empilhar_topo[1]; int encontrar_maior[1]; int topo; int temp[MAX];
}modificar;
// Funções necessárias para o desafio.
int func_mover_acima(); int func_mover_topo(); int func_empilhar_acima(); int func_empilhar_topo(); int func_inicializa_pilha(); bool func_pilha_vazia(); int func_sair();
int