Baixe o app para aproveitar ainda mais
Prévia do material em texto
Meus Simulados Teste seu conhecimento acumulado Disc.: ESTRUTURA DE DADOS Aluno(a): ULYSSES FERREIRA SERRA 202008598231 Acertos: 8,0 de 10,0 30/09/2021 Acerto: 1,0 / 1,0 A que estrutura pertence a definição: " Uma estrutura não linear que é um conjunto de nós e suas conexões entre eles e não há limitação de vértices. Muito utilizada para representação de percursos em mapas." pilhas encadeadas filas encadeadas grafos listas encadeadas structs Respondido em 30/09/2021 12:29:24 Acerto: 0,0 / 1,0 Diga, para o trecho do programa abaixo, qual a opção que representa a saída em tela. Considere que o programa será compilado sem erros, e irá executar também sem problemas. void troca (int x, int *y){ int tmp; tmp = *y; *y = x; x = tmp; } int main() { int a = 13, b = 10; troca( a, &b ); cout<<"Valores: "<< a<<"\t"<< b<< endl; system("pause"); } Valores: 31 01 Valores: 13 10 Valores: 10 13 Valores: 10 10 Valores: 13 13 Respondido em 30/09/2021 12:31:20 Questão1 a Questão2 a https://simulado.estacio.br/alunos/inicio.asp javascript:voltar(); Explicação: A execução começa pela main. São passados o valor de a, que é 13 e o endereço de b, que vale 10. Em seguida, é chamada a função troca e são passados o valor de a e o endereço de b. Executando a função troca, x recebe 13 e *y recebe 10. Mas ocorre a troca, usando tmp como auxiliar. Então x recebe 10 e *y recebe 13. Ao terminar a execução da função, voltamos para a main e temos a sem mudanças e b com a mudança ocorrida na função. Note que x é um parâmetro passado por valor e y é um parÂmetro passado por referência. Portanto, a ficou 13 e b ficou 13. Logo, será impresso : Valores: 13 13 Acerto: 1,0 / 1,0 Os métodos de ordenação são muito utilizados em estruturas de dados para facilitar a busca e a recuperação posterior de itens de conjuntos ordenados. Existem vários métodos de ordenação, por este motivo, marque corretamente a alternativa que apresenta o código do método de seleção. void ordena(int v[], int n){ int i, j, menor, aux; for (j = 0; j < n-1; j++) { for (i = j+1; i < n; i++) { if (v[i] < v[j]) { aux = v[j]; v[j] = v[i]; v[i] = aux; } } } } int ordena(float v[], float valor, int n) { int ini = 0, fim = n-1, meio; while (ini >= fim){ meio = ini/2; if (v[meio] == valor) return meio; if (valor < v[meio]) fim = meio -1; else ini = meio+1; } int ordena(float v[], float valor, int n) { int ini = 0, fim = n -1, meio; while (ini <= fim){ meio = (ini + fim)/2; if (v[meio] == valor) return meio; if (valor < v[meio]) fim = meio -1; else ini = meio+1; } return -1; } void ordena (int v[], int n){ int i, j, aux; for (j = 1; j < n; j++) for (i=j; i > 0 && v[i-1]> v[i]; i--){ aux = v[i-1]; v[i-1] = v[i]; v[i] = aux; } } int ordena(float v[], float valor, int n){ for (int i = 0; i < n; i++) if (v[i] == valor) return i; Questão3 a return -1; } Respondido em 30/09/2021 12:33:50 Explicação: Na ordenação por seleção, a idéia é sempre procurar o menor elemento do vetor e inseri-lo no início do vetor. Procuramos o menor valor do vetor e colocamos ele em vetor. Procuramos o menor valor do vetor excluindo o já colocado e colocamos ele em vetor. E assim vamos indo até termos todo o vetor ordenado. Partindo sempre a partir do último elemento reordenado (a partir do i), o programa procura o menor elemento no vetor e o substitue pelo elemento i atual. É o que está ocorrendo na primeira opção! Gabarito Comentado Acerto: 1,0 / 1,0 Caso seja empregada uma busca binária em uma lista sequencial ordenada com 2048 valores, qual seria o número máximo de comparações para encontrar um valor que esteja na lista? 9 12 8 10 11 Respondido em 30/09/2021 12:35:07 Explicação: Como a busca binária sai continuamente dividindo o conjunto de dados ao meio (em duas partes), então vamos fatorar e organizar o resultado como potência de base 2. Fatorando 2048 temos 2 11 Portanto, a resposta é 11. Acerto: 0,0 / 1,0 Estude atentamente o código a segir: int deciframe(int v[ ], int tam, int e){ int i = 0, f = tam -1, m; while ( i <= f ){ m = ( i + f ) / 2; if ( v[m] == e ) { return m; } if ( e < v[m] ) { f = m - 1; } else { i = m + 1; } } return -1; } Sabendo que a chamada da mesma foi feita com os parâmetros recebendo os seguintes valores, o que ela retornaria? v[10] = {0, 2, 4, 6, 8, 10, 20, 100} tam = 8 e = -6 Questão4 a Questão5 a -1 0 4 6 3 Respondido em 30/09/2021 12:59:02 Explicação: Analisando int deciframe(int v[ ], int tam, int e) { int i = 0, f = tam -1, m; while ( i <= f ){ m = ( i + f ) / 2; if ( v[m] == e ) { return m; } if ( e < v[m] ) { f = m - 1; } else { i = m + 1; } } return -1; } Sabendo que a chamada da mesma foi feita com os parâmetros recebendo os seguintes valores, o que ela retornaria? v[10] = {0, 2, 4, 6, 8, 10, 20, 100} tam = 8 e = -6 Está procurando pelo valor e = -6. Como se sabe pelo estudo da busca binária e olhando o código dado, temos que -6 não existe na lista então a função irá retornar -1 (vide última linha da função). SE a busca tivesse sucesso, o teste do 1o. if no while seria verdadeiro e então o índice m de v seria retornado. Mas não é o caso, pois -6 não foi encontrado. Acerto: 1,0 / 1,0 Existem vários tipos de estruturas de dados do tipo dinâmicas, entretanto, uma estrutura considerada simples são as listas. Pode-se implementar vários tipos de listas, entretanto, a estrutura que apresenta o conceito de LIFO é: Fila Matriz Pilha Struct Ponteiro Respondido em 30/09/2021 12:36:42 Gabarito Comentado Acerto: 1,0 / 1,0 O que acontece quando se deseja inserir um elemento em uma FILA que já está cheia? Enqueue. Dequeue. Underflow. Overflow. A inserção é feita sem problema. Questão6 a Questão7 a Respondido em 30/09/2021 12:46:28 Gabarito Comentado Acerto: 1,0 / 1,0 O espaço necessário para a representação dos dados pode ser alocado à medida que se torne necessário, através da alocação dinâmica. Uma estrutura armazenada através de encadeamento apresenta seus nodos alocados em posições aleatórias na memória, e não lado a lado. Dessa forma, existem várias vantagens no uso de representar os dados por encadeamento. Marque a alternativa correta que apresenta estas vantagens. Acesso, representação, compartilhamento de memória. Proteção de memória, transferência de dados, estruturas simples. Transferência de dados, gerenciamento de memória e procedimentos menos intuitivos. Previsão de espaço físico, estruturas complexas, procedimentos menos intuitivos. Compartilhamento de memória, maleabilidade e facilidade para inserção e remoção de componentes. Respondido em 30/09/2021 12:38:57 Explicação: FALSO . Previsão de espaço físico, estruturas complexas, procedimentos menos intuitivos. FALSO Acesso, representação,compartilhamento de memória. FALSO Proteção de memória, transferência de dados, estruturas simples. FALSO Transferência de dados, gerenciamento de memória e procedimentos menos intuitivos. VERDADEIRO Compartilhamento de memória, maleabilidade e facilidade para inserção e remoção de componentes. Gabarito Comentado Acerto: 1,0 / 1,0 Questão8 a Questão 9a Para converter de decimal para binário usamos a estrutura de dados pilha. Assinale a opção que, corretamente, indica as ações corretas para empilhar o resto da divisão gerado no processo de conversão, considerando uma lista simplesmente encadeada. Considere o tipo definido abaixo : struct no{ int dado; struct no *link; }; Não é necessário alocar memória com new. Basta criar uma struct do tipo no, armazenar o resto da divisão número por 2 no campo dado e aterrar o campo link. É preciso armazenar o resto da divisão do número por 2 no campo dado do primeiro nó da lista e retornar o ponteiro para este nó. Basta alocar memória com new, armazenar o resto da divisão do número por 2 no campo dado do novo nó e aterrar o link do novo nó. Basta alocar memória com new e armazenar o resto da divisão do número por 2 no campo dado do novo nó . É preciso alocar memória com new, armazenar o resto da divisão do número por 2 no campo dado do novo nó, apontar o link do novo nó para o início da lista e enfim, retornar o ponteiro para o novo nó. Respondido em 30/09/2021 12:44:54 Gabarito Comentado Acerto: 1,0 / 1,0 Uma estrutura de dados em lista duplamente encadeada permite na cadeia movimentos para: Para trás, apenas. Para cima e para baixo ou para frente e para trás. Para cima e para baixo, apenas. Para frente, apenas. Para frente e para trás, apenas. Respondido em 30/09/2021 12:42:22 Explicação: A resposta é simples assim. Questão10 a javascript:abre_colabore('38403','267919943','4846173739');
Compartilhar