Baixe o app para aproveitar ainda mais
Prévia do material em texto
Fechar Avaliação: ESTRUTURA DE DADOS Tipo de Avaliação: AV Aluno: Professor: JANE TAVARES ALVAREZ DA SILVA Nota da Prova: 3,0 Nota de Partic.: 2 Data: 1a Questão (Ref.: 201201976729) Pontos: 0,5 / 1,5 Os agentes Leo e Lia receberam sequências de números de seus contatos. Para saberem qual o próximo passo da missão, precisam descobrir que números se repetem nas sequências recebidas por cada um. Faça uma função que receba dois vetores v e w de inteiros como parâmetros e gere um vetor z, resultante da interseção entre v e w. Protótipo da função : bool intersecao(int v[ ], int w[ ], int z [ ], int nv , int nw , int &n); onde nv: quantidade de elementos em v nw : quantidade de elementos em w n : quantidade de elementos no vetor z Note : Inicialmente n vale zero. Deverá ser retornado true (sucesso na interseção) ou false (fracasso na interseção). Resposta: bool intersecao(int v[5], int w[5], int z[5], int nv, int nw, int &n) { while (i=0; i <= 5;) { for (i <=5;i=0;i++) { if (v[i] == w[i]) z[i] = v[i]; } } } Gabarito: bool intersecao(int v[], int w[], int inter[], int nv , int nw , int &n) { bool achou = false; for (int i = 0; i < nv; i++) for (int j = 0; j < nw; j++) if (v[i] == w[j]) { inter[n] = v[i]; achou = true; n++; } return achou; } 2a Questão (Ref.: 201202155032) Pontos: 0,0 / 1,5 Faça uma função em C++ para imprimir os dados de uma lista duplamente encadeada não vazia. Considere struct nodupla { int dado; struct *dlink, //ponteiro para o nó à direita *elink; //ponteiro para o nó à esquerda }; e o seguinte protótipo : void mostrar(nodupla *p); Considere que p aponta para o 1o. nó da lista à esquerda. Resposta: void mostrar(nodupla *p) { cout << nodupla.dado; cout << nodupla.*dlink; cout << nodupla.*elink; } Gabarito: void mostrar(nodupla *p) { while (p != NULL) { cout << p->dado << " "; p = p->dlink; } } 3a Questão (Ref.: 201201940157) Pontos: 0,5 / 0,5 Analise as seguintes afirmações: I. Na Passagem por Referência, o parâmetro que vai ser passado na chamada da função deve ser uma variável, de tal forma que uma alteração de valor neste parâmetro também altera a variável correspondente. II. Uma recursão consiste em uma função chamar ela mesma com argumentos sempre do mesmo valor. III. Considerando-se o escopo das variáveis, é correto afirmar que uma variável é dita global quando a sua passagem no momento da chamada de uma função se dá tanto por valor quanto por referência. Uma variável é dita local quando esta passagem se dá apenas por valor. Indique a opção que contenha todas as afirmações verdadeiras. somente a alternativa I. II e III. somente a alternativa e II. I e II. I e III. 4a Questão (Ref.: 201202157733) Pontos: 0,0 / 0,5 Analise as afirmativas abaixo e selecione a alternativa correta. I Algumas aplicações da estrutura de dados grafo são: Diagrama de Entidade Relacionamento e Redes de computadores. II Árvore e lista duplamente encadeada são estruturas não lineares. III A Fila é uma estrutura não linear e a inserção de um elemento acontece ao final. IV A Lista é uma das estruturas de dados mais simples, mas não se pode ordená- la. V O uso de ponteiros é fundamental para construção de listas encadeadas. I , II e IV são verdadeiras I e V são verdadeiras II E IV são verdadeiras II e V são verdadeiras III e V são verdadeiras 5a Questão (Ref.: 201201951653) Pontos: 0,5 / 0,5 Existem vários algoritmos de busca em estruturas de dados, um destes realiza a busca em vetores, e requer acesso aleatório aos elementos desta estrutura e parte do pressuposto de que os dados do vetor estejam ordenados e utiliza a técnica de divisão e conquista comparando o elemento desejado com o elemento do meio do vetor. Esta técnica ainda verifica se o elemento do meio do vetor for o desejado, a busca termina. Caso contrário, se o elemento do meio vier antes do elemento buscado, então a busca continua na metade posterior do vetor. E se o elemento do meio vier depois da chave, a busca continua na metade anterior do vetor. O algoritmo que utiliza esta metodologia é: Inserção Bolha Pesquisa sequencial Seleção Pesquisa binária 6a Questão (Ref.: 201201948596) Pontos: 0,5 / 0,5 O processo de rearranjar um conjunto de dados em uma ordem crescente ou decrescente é chamado de ordenação. Existem várias técnicas de ordenação, entretanto a técnica que procura o menor valor entre todos os elementos do vetor e troca-o pelo primeiro elemento; para os n - 1 elementos restantes, determinação do elemento de menor valor e troca pelo segundo elemento e assim sucessivamente, é chamado de: Binária Inserção Seleção Hash Bolha 7a Questão (Ref.: 201201948079) Pontos: 0,5 / 0,5 A técnica LIFO (last in first out), utilizada em programação estruturada, é fundamentada no conceito de: Pilha Ponteiro Fila Registro Loop 8a Questão (Ref.: 201202150863) Pontos: 0,5 / 0,5 As pilhas sequenciais são estruturas que guardam a ordem reversa dos dados nelas armazenados, e isto em muitas ocasiões é muito vantajoso. A operação usada para inserir um elemento X numa pilha é conhecida na literatura como PUSH (X). Para remover um elemento de uma pilha a operação é o POP( ). Assim estas duas funções devem implentar o algoritmo LIFO (Last In - First Out ) ou o último a entrar é o primeiro a sair. Sendo assim se aplicarmos as seguintes operações em uma PILHA vazia: PUSH(10),PUSH(5),POP(),PUSH(7),POP(),PUSH(2),POP(),POP( ). Quais valores restarão na pilha? Apenas o 2 Nenhum, a pilha estará vazia. 10 e 2 7 e 2 Apenas o 10 9a Questão (Ref.: 201202153509) Pontos: 0,0 / 1,0 void enfileirar(Fila F, int valor) { if (F.fim == n) cout << "Fila cheia\n"; else { F.fim++; F.v[F.fim] = valor; } } void enfileirar(Fila F, int valor) { if (F.fim == n - 1) cout << "Fila cheia\n"; else { F.fim++; F.v[F.fim] = valor; } } void enfileirar(Fila &F, int valor) { if (F.fim == n - 1) cout << "Fila cheia\n"; else F.v[F.fim] = valor; } void enfileirar(Fila &F, int valor) { if (F.fim == n - 1) cout << "Fila cheia\n"; else { F.fim++; F.v[F.fim] = valor; } } void enfileirar(Fila &F, int valor) { if (fim == n - 1) cout << "Fila cheia\n"; else { fim++; v[fim] = valor; } } 10a Questão (Ref.: 201201940202) Pontos: 0,0 / 1,0 Em relação às estruturas de dados, é correto afirmar: Nos sistemas operacionais, a execução dos processos concorrentes ocorre segundo os princípios da estrutura FILO. LIFO refere-se à estrutura de dados do tipo pilha, que nada mais é do que uma lista linear, duplamente encadeada. LIFO refere-se à estrutura de dados do tipo pilha, que nada mais é do que uma lista linear, sem disciplina de acesso, onde o primeiroelemento a entrar é o último a sair. Guardar endereço de memória em "nós", normalmente identificados por previous ou next, é uma característica presente nas listas duplamente encadeadas. Um grafo com um único vértice e sem arestas é conhecido como dígrafo. Período de não visualização da prova: desde 30/05/2014 até 16/06/2014.
Compartilhar