Classificar dados em uma pilha
Este projeto fará com que você classifique os dados em uma pilha, com um conjunto limitado de instruções, usando o menor número possível de ações. Para ter sucesso, você terá que manipular vários tipos de algoritmos e escolher a solução mais apropriada (de muitos) para uma classificação de dados otimizada. Version: 6 .
Você pode ler o assunto: push_swap.pdf
Classifique uma lista aleatória de números inteiros usando o menor número de movimentos, 2 pilhas e um conjunto limitado de operações.
Você começa com duas pilhas vazias: A e B. Você recebe uma lista aleatória de números inteiros por meio de argumentos da linha de comando.
Somente esses movimentos são permitidos:
sa : Troque A - Troque os 2 primeiros elementos no topo da pilha a. Não faça nada se houver apenas um ou nenhum elemento).sb : Swap B - Troque os 2 primeiros elementos na parte superior da pilha b. Não faça nada se houver apenas um ou nenhum elemento).ss : sa e sb ao mesmo tempo.pa : Empurre a - Pegue o primeiro elemento no topo de B e coloque -o no topo de a. Não faça nada se B estiver vazio.pb : Empurre B - Pegue o primeiro elemento no topo de A e coloque -o no topo de B. Não faça nada se A estiver vazio.ra : Gire a - Desligue todos os elementos da pilha A por 1. O primeiro elemento se torna o último.rb : Gire B - Desligue todos os elementos da pilha B por 1. O primeiro elemento se torna o último.rr : ra e rb ao mesmo tempo.rra : Gire a gire a - desligue todos os elementos da pilha A por 1. O último elemento se torna o primeiro.rrb : girar reversa B - Deslize todos os elementos da pilha B por 1. O último elemento se torna o primeiro.rrr : rra e rrb ao mesmo tempo. No final, a pilha B deve vazio e todos os números inteiros devem estar na pilha A , classificados em ordem crescente.
Crie dois programas: checker e push_swap .
O programa checker lê uma lista aleatória de números inteiros do stdin, os armazena e chega para ver se eles são classificados.
O programa push_swap calcula os movimentos para classificar os números inteiros - empurrando, estourando, trocando e girando entre a pilha A e a pilha B - e exibe essas direções no stdout.
Você pode PUPLE push_swap no checker e checker verificará se as instruções do push_swap foram bem -sucedidas.
Ambos os programas devem analisar obrigatoriamente a entrada de erros, incluindo cadeias vazias, sem parâmetros, parâmetros não numéricos, duplicados e instruções inválidas/inexistentes.
Push_swap deve estar em conformidade com a norma 42.
O uso de funções normais libc é estritamente proibido. Os alunos podem, no entanto, usar: write , read , malloc , free , exit . Não deve ter vazamentos de memória. Os erros devem ser tratados com cuidado.
De forma alguma ele pode sair de maneira inesperada (falha de segmentação, erro de barramento, livre livre, etc.).
Todos os erros como: comandos errados, permissão para arquivos e etc, precisam ser identificados.
Testador