• Matéria: Informática
  • Autor: mthscapelini
  • Perguntado 8 anos atrás

Existem ótimos exemplos de utilização de Pilhas em nosso cotidiano, nos brinquedos usados em sala de aula ou até mesmo numa simples pilha de livros, onde é possível se determinar qual o algoritmo (critério) utilizado para empilhá-los: tamanho, grossura, cor, tema, etc.. Muitos professores usam estas artimanhas a fim de que os alunos possam desenvolver o raciocínio lógico.



Pensando nisso, um programador desenvolveu o código abaixo, para que os professores possam informar a quantidade de discos e o sistema informasse a quantidade total de movimentos que serão realizados. Com esse algoritmo, eles poderiam criar gincanas e desafios entre os alunos para resolverem a ferramenta lógica que eles usam em sala de aula, com um número maior de discos.



Abaixo apresenta-se o código desenvolvido pelo programador mencionado.



#include
#include
int contador = 0;
void algoritmo(int n, char a, char b, char c)

{
if (n == 1)

{
printf("Move o disco %d de %c para %c\n", n, a, b);
contador++;
} else

{
algoritmo(n - 1, a, c, b);
printf("Move o disco %d de %c para %c\n", n, a, b);
algoritmo(n - 1, c, b, a);
contador++;
}
}


int main(void)
{
int numDiscos;
printf("Informe o numero de discos: ");
scanf("%d", &numDiscos);
algoritmo(numDiscos, 'A', 'B', 'C');
printf("\n\nA quantidade de movimentos foi: %d", contador);
return 0;
}



Sobre o algoritmo apresentado acima, analise as seguintes afirmações:



I - O Algoritmo trata-se da solução da Torre de Hanói.

II - Para o desenvolvimento deste algoritmo foi necessário o uso da recursividade assim como o uso de Pilhas.

III - Foi necessário, um contador para realizar a contagem da quantidade de movimento.

IV - O algoritmo limita o numero de pilhas informadas em 10 unidades.

Agora, assinale a alternativa correta.

Respostas

respondido por: bokomoko
45
I - O Algoritmo trata-se da solução da Torre de Hanói.
Verdade

II - Para o desenvolvimento deste algoritmo foi necessário o uso da recursividade assim como o uso de Pilhas.
Falso. De fato é utilizado a recursividade porém o uso de Pilhas não é explícito no programa. Usa-se Pilhas como se usa quando se faz uma chamada de uma função/subrotina. Se considerarmos que toda vez que usamos uma rotinha, uma funçao, estams usando pilha, de fato se usou pilha. Porém, se usarmos esse argumento, todos os programas fazem uso de pilha. O ponto que quero dizer é que o programador não criou pilha alguma. Apenas chamou recursivamente a funcao. Mesmo que ele não a chamasse recursivamente, estaria fazendo uso de pilha de forma implícita.


III - Foi necessário, um contador para realizar a contagem da quantidade de movimento.
Verdade.

IV - O algoritmo limita o numero de pilhas informadas em 10 unidades.
Falso. Em canto nenhum o limite de 10 unidades é implementado nesse algoritmo.


leoleo2007p565g4: está errado.
mthscapelini: errado
bokomoko: Está certo.
adyalves11: Está errado essa mer...
adyalves11: Correto é I, II e III
bokomoko: Demonstre
alexandregsantp64dey: Resposta Correta - I, II e III.
bokomoko: a iI está errada. Não há uso de pilhas> Se tem, me mostre onde.
bokomoko: Olha aqui uma implementacao em Python
https://repl.it/@bokomoko/hanoi-hanoi
respondido por: wolfwilly1p8tlht
75

Resposta correta

Apenas as alternativas I, II e III são corretas.  Correto

Corrigido pelo AVA

Anexos:
Perguntas similares