Baixe o app para aproveitar ainda mais
Prévia do material em texto
30/10/22, 16:22 Exercícios sobre pilhas: Algoritmos e Estruturas de Dados II - Engenharia de Software - Unid. Educ. Praça da Liberdade - PP… https://pucminas.instructure.com/courses/118484/quizzes/330783 1/11 Exercícios sobre pilhas Entrega 30 out em 23:59 Pontos 1,04 Perguntas 8 Disponível 24 out em 20:50 - 30 out em 23:59 Limite de tempo Nenhum Instruções Histórico de tentativas Tentativa Tempo Pontuação MAIS RECENTE Tentativa 1 59 minutos 0,78 de 1,04 Pontuação deste teste: 0,78 de 1,04 Enviado 25 out em 9:30 Esta tentativa levou 59 minutos. Prezados alunos, Esses exercícios devem ser realizados individualmente e encerrados até o dia 30/10, às 23:59. Essa atividade tem o valor de 1 ponto. Eveline 0 / 0,13 ptsPergunta 1 Considere o tipo abstrato de dados Pilha e suas típicas operações básicas: vazia(), empilhar(item) e desempilhar(). Considere também o tipo abstrato de dados Fila e suas operações típicas: vazia(), enfileirar(item), desenfileirar(). Suponha que o TAD Pilha apresente também a operação concatenar(p1, p2). Os parâmetros dessa operação correspondem às https://pucminas.instructure.com/courses/118484/quizzes/330783/history?version=1 30/10/22, 16:22 Exercícios sobre pilhas: Algoritmos e Estruturas de Dados II - Engenharia de Software - Unid. Educ. Praça da Liberdade - PP… https://pucminas.instructure.com/courses/118484/quizzes/330783 2/11 duas pilhas que serão concatenadas. A execução dessa operação retornará uma pilha cujo topo será o topo de p1. Além disso, o topo de p2 ficará imediatamente abaixo do item que estava no fundo de p1. Qual pseudocódigo abaixo corresponde à descrição da operação concatenar() conforme indicado acima? // variáveis var aux: Pilha; enquanto (!p1.vazia()) faça aux.empilhar(p1.desempilhar()); fim_enquanto enquanto (!aux.vazia()) faça p2.empilhar(aux.desempilhar()); fim_enquanto retorne(p2); esposta corretaesposta correta // variáveis var nova: Pilha; enquanto (!p1.vazia()) faça nova.empilhar(p1.desempilhar()); fim_enquanto enquanto (!p2.vazia()) faça nova.empilhar(p2.desempilhar()); fim_enquanto retorne(nova); 30/10/22, 16:22 Exercícios sobre pilhas: Algoritmos e Estruturas de Dados II - Engenharia de Software - Unid. Educ. Praça da Liberdade - PP… https://pucminas.instructure.com/courses/118484/quizzes/330783 3/11 enquanto (!p1.vazia()) faça p2.empilhar(p1.desempilhar()); fim_enquanto retorne(p2); // variáveis var nova: Pilha; var f: Fila; enquanto (!p1.vazia()) faça f.enfileirar(p1.desempilhar()); fim_enquanto enquanto (!p2.vazia()) faça f.enfileirar(p2.desempilhar()); fim_enquanto enquanto (!f.vazia()) faça nova.empilhar(f.desenfileirar); fim_enquanto retorne(nova); ocê respondeuocê respondeu 30/10/22, 16:22 Exercícios sobre pilhas: Algoritmos e Estruturas de Dados II - Engenharia de Software - Unid. Educ. Praça da Liberdade - PP… https://pucminas.instructure.com/courses/118484/quizzes/330783 4/11 // variáveis var nova: Pilha; var f: Fila; enquanto (!p2.vazia()) faça f.enfileirar(p2.desempilhar()); fim_enquanto enquanto (!p1.vazia()) faça f.enfileirar(p1.desempilhar()); fim_enquanto enquanto (!f.vazia()) faça nova.empilhar(f.desenfileirar); fim_enquanto retorne(nova); 0,13 / 0,13 ptsPergunta 2 A maioria dos softwares de aplicação possui comandos de "Desfazer" e "Refazer". O primeiro desfaz a última operação ou texto digitado, enquanto que, o segundo refaz uma operação ou texto desfeito, conforme sugerem os nomes dos comandos. Internamente, nos softwares, podem ser usadas duas estruturas de dados que armazenam as sucessivas operações de "Desfazer" e "Refazer", de modo que o próximo "Refazer" sempre recupera o último "Desfazer". Os tipos de estrutura de dados que podem ser usados para "Desfazer" e "Refazer" são, respectivamente: Pilha e pilha Correto!Correto! Fila e pilha Fila e fila 30/10/22, 16:22 Exercícios sobre pilhas: Algoritmos e Estruturas de Dados II - Engenharia de Software - Unid. Educ. Praça da Liberdade - PP… https://pucminas.instructure.com/courses/118484/quizzes/330783 5/11 Pilha e fila 0,13 / 0,13 ptsPergunta 3 Suponha as seguintes operações de empilhar e desempilhar realizadas em uma pilha vazia: empilhar(10), empilhar(5), empilhar(7), desempilhar(), empilhar(13), empilhar(4), desempilhar(), desempilhar(), desempilhar(), empilhar(1), desempilhar(), desempilhar(). Assinale a alternativa que contenha a sequência de números que foram removidos da pilha pela operação de desempilhar na sequência que foi executada. 10 - 5 - 7 - 13 - 4 - 1 7 - 4 - 13 - 5 - 1 - 10 Correto!Correto! 5 - 13 - 4 - 10 - 5 - 1 10 - 5 - 13 - 7 - 4 - 1 7 - 4 - 10 - 5 - 13 – 1 0,13 / 0,13 ptsPergunta 4 O método abaixo deve ser implementado na classe Pilha, que implementa o tipo abstrato de dados Pilha e suas típicas operações básicas: pilhaVazia(), empilhar(item) e desempilhar(). Esse método deve ser capaz de fazer e retornar uma cópia exata da pilha. // Método capaz de fazer e retornar uma cópia exata da pilha. public Pilha copiar() { 30/10/22, 16:22 Exercícios sobre pilhas: Algoritmos e Estruturas de Dados II - Engenharia de Software - Unid. Educ. Praça da Liberdade - PP… https://pucminas.instructure.com/courses/118484/quizzes/330783 6/11 Pilha pilhaCopia, pilhaAux; Celula aux; pilhaCopia = new Pilha(); pilhaAux = new Pilha(); if (!(pilhaVazia())) { I while (II) { pilhaAux.empilhar(new Item(aux.item.getId())); III } while (!pilhaAux.pilhaVazia()){ IV } } V } Analise as alternativas abaixo e indique a única que identifica corretamente os comandos que devem preencher as lacunas, numeradas de I a V. I - aux = topo.proximo; II - aux != null III - aux = aux.proximo; IV - pilhaCopia.empilhar(pilhaAux.desempilhar()); V - return (pilhaCopia); I - aux = topo; II - aux != fundo III - aux++; IV - pilhaAux.desempilhar(); V - return (aux); 30/10/22, 16:22 Exercícios sobre pilhas: Algoritmos e Estruturas de Dados II - Engenharia de Software - Unid. Educ. Praça da Liberdade - PP… https://pucminas.instructure.com/courses/118484/quizzes/330783 7/11 I - aux = topo.proximo; II - aux != fundo III – aux++; IV - pilhaCopia.empilhar(pilhaAux.desempilhar()); V - return (pilhaCopia); I - aux = topo; II - aux != fundo III - aux = aux.proximo; IV - pilhaAux.empilhar(pilhaCopia.desempilhar()); V - return (pilhaAux); I - aux = topo; II - aux != fundo III - aux = aux.proximo; IV - pilhaCopia.empilhar(pilhaAux.desempilhar()); V - return (pilhaCopia); Correto!Correto! 0 / 0,13 ptsPergunta 5 Considere o tipo abstrato de dados Pilha e suas típicas operações: criarPilha(), vazia(), empilhar(item), desempilhar() e copiar(). Analise o pseudocódigo abaixo e assinale a alternativa correta: função func(A[]: inteiro; n: inteiro): booleano // variáveis var i: inteiro var pilhaEntrada: Pilha var pilhaCopia: Pilha; var pilhaInverso: Pilha; início pilhaEntrada = criarPilha(); pilhaInverso = criarPilha(); 30/10/22, 16:22 Exercícios sobre pilhas: Algoritmos e Estruturas de Dados II - Engenharia de Software - Unid. Educ. Praça da Liberdade - PP… https://pucminas.instructure.com/courses/118484/quizzes/330783 8/11 para i <- 0 até (n - 1), com passo 1, faça pilhaEntrada.empilhar(A[i]); fim_para pilhaCopia = pilhaEntrada.copiar(); enquanto (!pilhaCopia.vazia()) faça pilhaInverso.empilhar(pilhaCopia.desempilhar()); fim_enquanto enquanto (!pilhaEntrada.vazia()) faça se (pilhaInverso.desempilhar() != pilhaEntrada.desempilhar()) então return falso; fim_se fim_enquantoreturn verdadeiro; fim A função “func” verifica se o vetor de entrada “A” é simétrico em relação à posição do meio, ou seja, se ele apresenta a mesma sequência de inteiros quer seja percorrido de frente para trás ou de trás para frente. esposta corretaesposta correta O TAD Pilha não é o mais adequado para a resolução desse problema. Deveria ter sido utilizado o TAD Fila para a resolução mais eficaz do problema proposto. 30/10/22, 16:22 Exercícios sobre pilhas: Algoritmos e Estruturas de Dados II - Engenharia de Software - Unid. Educ. Praça da Liberdade - PP… https://pucminas.instructure.com/courses/118484/quizzes/330783 9/11 A execução da função “func” sempre retornará verdadeiro, quaisquer que sejam os parâmetros de entrada. A execução de “func” pode acessar posições de memória não alocadas anteriormente. ocê respondeuocê respondeu Se a variável “pilhaCopia”, do algoritmo descrito acima, fosse retirada, juntamente com todo o pseudocódigo que a referencia; nenhuma alteração seria observada na execução da função, pois pilhaCopia é preenchida e, em seguida, esvaziada. 0,13 / 0,13 ptsPergunta 6 A pilha é uma estrutura de dados que permite a inserção e a remoção de dados sempre por meio de regras pré-definidas. Para que essas operações sejam realizadas, são utilizados dois métodos: push() e pop(). Com base nessas informações, considere que um programa possua uma pilha p, inicialmente vazia, e que as seguintes operações foram realizadas, nesta ordem: p.push(10); p.push(5); p.push(3); p.push(50); p.pop(); p.push(11); p.push(9); p.push(20); p.pop(); p.pop(). Ao fim da execução desses comandos, quais serão o topo da pilha e o somatório dos elementos ainda dentro da pilha, respectivamente? 9 e 38 3 e 29 50 e 68 20 e 58 30/10/22, 16:22 Exercícios sobre pilhas: Algoritmos e Estruturas de Dados II - Engenharia de Software - Unid. Educ. Praça da Liberdade - PP… https://pucminas.instructure.com/courses/118484/quizzes/330783 10/11 11 e 29 Correto!Correto! 0,13 / 0,13 ptsPergunta 7 Considere que os números 10, 11, 12, 13 e 14 foram inseridos, nessa ordem, em uma fila. Esses mesmos números foram inseridos na mesma ordem em uma pilha. Nesse caso, o número 14 é o primeiro elemento a ser removido da fila. o último elemento a ser removido da fila é o número 14. Correto!Correto! o primeiro elemento a ser removido da pilha é o número 10. o topo da pilha é o número 10. 0,13 / 0,13 ptsPergunta 8 Suponha uma estrutura de dados do tipo Pilha (“P”) e as operações básicas desse tipo de estrutura de dados: empilhar(item) e desempilhar(). Considere também uma estrutura de dados do tipo Fila (“F”) e as operações básicas desse tipo de estrutura de dados: enfileirar(item) e desenfileirar(). A pilha “P” e a fila “F” possuem originalmente n elementos cada (n > 5). Seja o pseudocódigo abaixo: para i = 1 até n, faça 30/10/22, 16:22 Exercícios sobre pilhas: Algoritmos e Estruturas de Dados II - Engenharia de Software - Unid. Educ. Praça da Liberdade - PP… https://pucminas.instructure.com/courses/118484/quizzes/330783 11/11 P.empilhar(P.desempilhar()); F.enfileirar(F.desenfileirar()); fim-para Ao final da execução do pseudocódigo acima, os estados finais de “P” e “F” serão, respectivamente: elementos em ordem inversa e elementos em ordem inversa. elementos em ordem inversa e elementos em ordem original. elementos em ordem original e elementos em ordem original. Correto!Correto! elementos em ordem original e elementos em ordem inversa. Pontuação do teste: 0,78 de 1,04
Compartilhar