



Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Enunciado do exercício-programa 2
Tipologia: Exercícios
1 / 5
Esta página não é visível na pré-visualização
Não perca as partes importantes!




Departamento de Ciência da Computação – IME-USP
A definição de quadrado mágico foi dada no enunciado do EP1. O jogo QM começa com um quadrado preenchido com todos os dígitos de 1 a 91. O objetivo é transformá-lo em quadrado mágico no número mínimo de jogadas. Cada jogada consiste na troca de lugar de dois dígitos em posições adjacentes no quadrado. Existe um pequeno problema nessa definição. Acontece que a vasta co- munidade de jogadores QMistas está há séculos dividida entre duas facções que empregam diferentes tipos de adjacências:
conter todos os dígitos 1 , 2 , 3 ,... , 9 em suas nove casas. Não é permitida a presença de repetições no quadrado.
1 2 3 4 5 6 7 8 9 O seu programa fará uma leitura de um quadrado, conforme no EP1, terminando se recebeu um 0. Entretanto, ao contrário do EP1, ele deve verificar que o quadrado dado contém todos os dígitos de 1 a 9 , caso contrário deve rejeitá-lo. Tendo aceitado o quadrado, deve pedir o tipo de adjacência a usar, usando o código numérico definido abaixo:
Tipo de jogo (0 - semitorre, 1 - rei):
Finalmente, deve começar o jogo. Para cada jogada, imprime o quadrado no formato usado no EP1, e pede uma nova jogada, conforme o exemplo:
5 2 3 - 10 4 8 6 - 18 7 1 9 - 17 /-- -- --
18 16 11 18 22
[3] Digitos para trocar (0 0 para parar):
O [3] é para indicar que é a terceira jogada.
Se a jogada for válida, deve ser efetuada, e aí tem duas possibilidades:
[4] Digitos para trocar (0 0 para parar): 5 2
[5] Digitos para trocar (0 0 para parar):
E é só isso! Se você fizer o programa e resolver jogar, vai ver que, como quebra-cabeça, esse jogo é de pequena dificuldade. Já, se for o caso de encontrar uma solução no mínimo de jogadas, isso já se torna um desafio nada bobo, e dá até para competir. E, se quiser ver se conseguiu realmente resolver o problema da forma mais eficiente, pode clicar no especialista. Aliás, para experimentar o jogo, nem precisa escrever o programa:
Executáveis deste exercício programa podem ser encontrados em www.ime.usp.br/~mac2166/ep2/executaveis. Caso você tenha dúvidas sobre qual deve ser o comportamento do seu programa em alguma situação, veja como se comporta este executável. Um detalhe que deve estar visível nos exemplos e no executável é que as mensagens estão sem acentos. Isto é porque a apresentação correta de letras acentuadas na tela depende de configurações às vezes complicadas; senão, um texto que aparece corretamente num computador pode aparecer confuso em outro. Para simplificar o programa, deixamos os acentos de lado.
Os dados lidos pelo seu programa são todos números inteiros não negativos. Se na hora em que os dados são pedidos alguém digitar um texto ou qualquer outra coisa, seu programa pode reagir como quiser. Isto significa que se, por exemplo, um número com casas decimais ou um negativo for digitado como entrada para o programa, ou uma letra, um cifrão, uma arroba, o seu programa pode travar o computador ou explodir sem ficar envergonhado. Por outro lado, se alguém der um número inteiro positivo, está explicado acima direitinho como seu programa deve reagir.
Todo exercício programa deve seguir as observações contidas na página www.ime.usp.br/~mac2166/infoeps, onde estão descritas as diretrizes para forma de entrega do exercício, aspectos importantes na avaliação etc.