Baixe o app para aproveitar ainda mais
Prévia do material em texto
ESTRUTURA DE DADOS 1a Questão (Ref.:201709058810) Acerto: 1,0 / 1,0 Preciso cadastrar todos os interessados em meu novo curso de programação. Qual a estrutura de dados mais adequada para modelar este problema, visto que não há qualquer preocupação com ordem de chegada ou saída de aluno da turma. Lista 2a Questão (Ref.:201708459449) Acerto: 1,0 / 1,0 Em relação a estruturas de dados, avalie a correspondência existente entre as estruturas de dados Lineares e Não Lineares com suas respectivas coleções de dados. A COrreta associação entre os elementos das duas tabelas é: a1, b1, c2, d1 3a Questão (Ref.:201708467928) Acerto: 1,0 / 1,0 Em programação podemos utilizar um recurso que modulariza o programa chamado função. As funções precisam ser ativadas para que possam ser executadas. Para isso, é necessário chamar a função pelo seu nome e enviar, quando necessário, os valores respectivos para os parâmetros de entrada. Ao enviar os valores para os parâmetros de entrada, o programa pode fazer uma cópia deste valor ou trabalhar em um endereço enviado. Quando se envia o endereço estamos ativando a função por meio de: Ponteiros. 4a Questão (Ref.:201708700902) Acerto: 1,0 / 1,0 Informe qual deverá ser a saída do programa abaixo: #include void func(int *x) { do{ cout << *x << " "; (*x)--; }while(*x>0); } main() { int x=5; func(&x); cout << x; system("pause"); } 5 4 3 2 1 0 5a Questão (Ref.:201708672604) Acerto: 1,0 / 1,0 Com relação à struct, é correto afirmar que : Cada elemento da struct é denominado membro ou campo, sendo que a struct pode armazenar elementos de tipos diferentes ou não. 6a Questão (Ref.:201709510468) Acerto: 1,0 / 1,0 Em C++, quando uma variável é declarada como uma struct, o acesso para atribuição e leitura dos membros (campos) deste registro se dá pelo operador : ∙ (ponto). 7a Questão (Ref.:201709037756) Acerto: 1,0 / 1,0 if(vet[j-1] < vet[j] ) { aux=vet[j]; vet[j]= vet[j-1]; vet[j-1]=aux; } 8a Questão (Ref.:201708467924) Acerto: 1,0 / 1,0 Os algoritmos de busca são muito utilizados em estrutura de dados. Sendo assim, o algoritmo que realiza a busca em vetores e que exige acesso aleatório aos elementos do mesmo e que parte do pressuposto de que o vetor está ordenado e realiza sucessivas divisões do espaço de busca comparando o elemento que se deseja com o elemento do meio do vetor, é chamado de: Pesquisa binária 9a Questão (Ref.:201709590145) Acerto: 1,0 / 1,0 Considere as seguintes afirmações: I. Só podemos ter uma matriz de no máximo duas dimensões. Exemplo: C[100][100]. II. Ao declararmos um vetor int A[10], se escrevemos A[2] acessamos o segundo elemento do vetor. III. Uma string declarada como char B[30] armazena no máximo 30 caracteres. Escolha a alternativa correta: Nenhuma afirmação está correta. 10a Questão (Ref.:201709504557) Acerto: 1,0 / 1,0 Em relação às listas sequenciais, considere as seguintes afirmações: I - são estruturas lineares que utilizam vetores para armazenamento dos dados; II - os componentes da lista são os dados que se deseja armazenar e um valor inteiro com a quantidade de dados da lista; III - os dados são sempre inseridos ou removidos no final da lista, tomando-se sempre o cuidado de atualizar a quantidade de dados da lista; IV - listas podem apresentar dados repetidos ou não admitir repetição (listas com e sem repetição). Assinale a opção que contém apenas todas as afirmativas corretas: I, II, IV ESTRUTURA DE DADOS 1. Estão entre algumas das possíveis formas de estruturas de dados: Árvores binárias, pilhas, vetores 2. Qual estrutura de dados é mais adequada para armazenar a estrutura do diretório do sistema de arquivos de um sistema operacional? Árvore 3. Na maioria dos sistemas operacionais, os arquivos são organizados hierarquicamente em um esquema de diretórios (pastas) e sub-diretórios. Qual a estrutura mais adequada para representar este problema ? árvore 4. Os irmãos Silva irão viajar por vários países da Europa e por isso, traçaram no mapa o percurso que farão, de cidade a cidade. Qual a estrutura de dados mais adequada para modelar este problema ? Grafo 5. Qual estrutura de dados não linear que é utilizada na implementação de Redes de Computadores, na Computação Gráfica, em modelagem de circuitos digitais e etc. E que se caracteriza por apresentar um conjunto de nós e conexões entre eles. Grafos 6. Preciso cadastrar todos os interessados em meu novo curso de programação. Qual a estrutura de dados mais adequada para modelar este problema, visto que não há qualquer preocupação com ordem de chegada ou saída de aluno da turma. Lista 7. O que é estrutura de dados? É um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados eficientemente. 8. Podemos dizer que estrutura de dados é: O meio para armazenar e organizar dados com o objetivo de facilitar o acesso e as modificações. 1. As estruturas de dados são utilizadas para manter dados ou informações organizados na memória, o que possibilita a otimização do uso destes dados. Porém, as estruturas guardam características especiais na manipulação destes dados, assim deve-se escolher a estrutura certa ou mais adequada para uma determinada aplicação. Portanto marque a opção que representa a melhor estrutura, quando se tem como requisitos principais o acesso aleatório aos dados e alocação destes de forma contínua na memória. Lista Sequencial 5. Estão entre algumas das possíveis formas de se estruturar dados: Grafos, lista ordenada, vetores. 6. Observe o trecho do programa em C++ abaixo e, após, entrar com os valores sugeridos para sua execução assinale a alternativa que representa a resposta final. cin >> a; cin >> b; cin >> c; cin >> d; cout << a; cout << b; cout << c; cout << d; cout << d; cout << c; cout << b; cout << a; Após a impressão dos valores pela ordem teremos uma fila e uma pilha. Escreva em uma linguagem de C++ uma função de nome achaMaior( ), que receba como parâmetros um vetr de inteiros e um outro parâmetro do tipo inteiro que represente o tamanho deste vetor. A função deve também, bscar e retomaro maior elemento do vetor. Resposta int achaMaior(int v[ ], int t) { Int maior=v[0]; For( int i=1; i < t; i++) { If ( maior < v[i] ) maior=v [i]; } Return maior; } COMO É A LÓGICA DO LIFO Resposta: O primeiro que entra na pilha é o ultimo que sai QUAL A DIFRENÇA ENTRE PILHA E FILA Resposta: Pilha se caracteriza por ser uma estrutura de dados que são inseridos e retirados numa sequencia semelhante as anilhas de alteres, isto é, usa a lógica LIFO. Já uma fila se caracteriza por ser um estrutura semelhante a fila de banco, isto é, os dados vão chegando e sendo processados e retirados da estrutura.Essa lógica é chamada de FIFO. ESTRUTURA DE DADOS – FUNÇÕES 1. 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: 13 10 2. Sobre funções, é correto afirmar: São blocos de instruções que são executados quando são chamadas em alguma parte do programa. 3. Considere a função abaixo: void func (int a, int &b) { a++; b = a*2; } e o seguinte trecho de código na função main : int x=2, y=3; func (x,y); func (y,x); cout << x << " ; " << y; Após a execução do cout o que será impresso ? 14; 6 4. Com a utilização das estruturas de dados e seus tipos, em algumas situações é imprescindível a criação de funções que façam determinada verificação ou ação nestas estruturas. Dessa forma, analise a função abaixo e marque corretamente a alternativa que descreve as funcionalidades desta. int funcao(float v[], float vl, int n) { for (int i = 0; i < n; i++) if (v[i] == vl) return i; return -1; } Retorna a posição de v se o valor vl foi encontrado. Gabarito Coment. 5. Considere o trecho de um programa escrito em C++ : int func1 (long num) { int n, na=1; while (num / 10 != 0){ na += 1; num /= 10; } return na; } main() { cout << func1 (132041); } Marque a opção correta que mostra o que é impresso na tela. 6 6. Considere a função abaixo: int func (int a, int& b){ a = b - a; b = a * 2; a = b * 2; return a; } Considere o seguinte código na função main: int x = 2, y = 3, z; z = func (x, y); cout << x << "; " << y << "; " << z; O que será impresso? 2; 2; 4 7. Considere a seguinte função: void dobro(int x) { x = 2 * x; } Qual valor será impresso na tela quando o seguinte programa principal for executado? int main() { int n = 3; n = n + 2; dobro(n); cout << n; return 0; } 5 8. Considere o trecho de um programa escrito em C++. void func1 (bool x, int ini, int fim) { for ( int y=ini; y != fim ; y++) { x = !x; if (x) cout << y << endl; else cout << -y << endl; } } int main() { func1(false, 1, 7); } Marque a opção correta que mostra o que é impresso na tela. 1, -2, 3, -4, 5, -6 ESTRUTURA HETERÔGENEAS - ESTRUTURA 1a Questão Qual das seguintes estruturas de dados é classificada como heterogênea? Registro Ref.: 201709081454 2a Questão Pode-se definir uma estrutura heterogênea como sendo um conjunto de elementos, geralmente, agrupados sob uma lógica e associados por um nome. Esses elementos podem ser variáveis simples, matrizes ou ainda outras estruturas. Seja a definição de uma estrutura como: struct aluno { string nome; float nota; }; Suponha ainda que exista um vetor desta estrutura, definido como: aluno vet [100]; Marque a alternativa em que é atribuída de forma correta a nota 5.7 para o décimo primeiro elemento deste vetor. vet[10].nota=5.7; Ref.: 201709139493 3a Questão Marque a opção correta, considerando struct Livro { int codigo; float preco; } liv; liv.preco = 30.70; Livro.liv.codigo = 12345; liv->preco = 30.70; Livro.codigo = 12345; Livro->liv.codigo = 12345; Ref.: 201709037765 4a Questão Pode-se definir uma estrutura heterogênea como sendo um conjunto de elementos, geralmente, agrupados sob uma lógica e associados por um nome. Esses elementos podem ser variáveis simples, matrizes ou ainda outras estruturas. Seja a definição de uma estrutura como: struct aluno { string nome; float media; }; Suponha ainda que exista um vetor desta estrutura, definido como: aluno vet [ 10]; Marque a alternativa em que é atribuída de forma correta a media 6.0 para o quarto elemento deste vetor. aluno[3].media=6.0; vet[3].aluno=6.0; aluno[10]=6.0; aluno[3].10=6.0; vet[3].media=6.0; Ref.: 201709107243 5a Questão Pode-se definir uma estrutura heterogênea como sendo um conjunto de elementos, geralmente, agrupados sob uma lógica e associados por um nome. Esses elementos podem ser variáveis simples, matrizes ou ainda outras estruturas. Seja a definição de uma estrutura como: struct aluno { string nome; float nota; }; Suponha ainda que exista um vetor desta estrutura, definido como: aluno vet [ 100]; Marque a alternativa em que é atribuída de forma correta a nota 5.7 para o décimo primeiro elemento deste vetor. vet[10].aluno.nota=5.7 ; aluno.vet[10]=5.7; aluno.vet[10].nota=5.7; vet[10]=aluno.5.7; vet[10].nota=5.7; Ref.: 201708672604 6a Questão Com relação à struct, é correto afirmar que : Não é possível criar um vetor de structs, pois o vetor trabalha apenas com dados do mesmo tipo. A struct é sempre definida dentro da main. Cada elemento da struct é chamado campo e cada campo deve ser, obrigatoriamente, de um tipo de dados distinto de outro campo. Cada elemento da struct é denominado membro ou campo, sendo que a struct pode armazenar elementos de tipos diferentes ou não. Cada elemento da struct é chamado componente. Ref.: 201709510470 7a Questão Dadas as afirmativas abaixo, identifique as corretas e marque a alternativa verdadeira. I- Vetores e matrizes servem apenas para construir agregados de dados heterogêneos. II- Registros em C++ são tipos de dados compostos formados por mais de um tipo de dados. III- Na Linguagem C++, "struct" é uma palavra reservada que serve para definir registros. IV- Registros são tipos de dados heterogêneos. estão corretas apenas as afirmativas I, II e III. estão corretas apenas as afirmativas I, III e IV. todas as afirmativas estão corretas. estão corretas apenas as afirmativas II, III e IV. estão corretas apenas as afirmativas I, II e IV. Ref.: 201709192337 8a Questão o programa de computador necessita preencher uma lista de alunos (nome e nota) até que a lista esteja cheia. Sabe-se que a lista tem capacidade para 25 alunos. Utilizando agregados heterogêneos, qual o trecho de código que exibe a melhor forma de solucionar este problema? for (int i = 0; i < 25; i++) { cin >> lista[i]->nome; cin >> lista[i]->nota; } int i = 0; while( i < 25) { cin >> lista[i].nome; cin >> lista[i].cargo; i ++; } for (int i = 0; i < 25; i++) { cin >> lista->nome; cin >> lista->nota; } for (int i = 0; i <= 25; i++) { cin >> lista[i].nome; cin >> lista[i].nota; }for (int i = 0; i < 25; i++) { cin >> lista[i].nome; cin >> lista[i].nota; } ESTRUTURA DE DADOS - ORDENAÇÃO E PESQUISA 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 é: Pesquisa sequencial Inserção Bolha Seleção Pesquisa binária Gabarito Coment. 2. Qual a importância de se entender a "ordenação" de dados ? A ordenação é a base na qual, muitos programas são construídos. Entendendo a ordenação, tem-se conhecimento para manter outros problemas. A ordenação é a base na qual, muitos sistemas são construídos. Entendendo a ordenação, tem-se conhecimento para manter outros problemas. A ordenação é a base na qual, muitos sistemas são construídos. Entendendo a ordenação, tem-se conhecimento para resolver outros problemas. A ordenação é a base na qual, muitos algoritmos são construídos. Entendendo a ordenação, tem-se conhecimento para manter outros problemas. A ordenação é a base na qual, muitos algoritmos são construídos. Entendendo a ordenação, tem-se conhecimento para resolver outros problemas. Gabarito Coment. 3. Marque a afirmativa correta para a "Busca ou pesquisa binária". Consiste em fazer uma busca em um vetor já ordenado, dividindo o espaço de busca ao meio e verificando se o dado está no meio ou, antes do meio ou depois do meio. É o processo pelo qual um conjunto de dados é colocado em uma ordem crescente ou decrescente. Consiste em fazer uma busca em um vetor desordenado, dividindo o espaço de busca ao meio e verificando se o dado está no meio ou, antes do meio ou depois do meio. Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos. Consiste em adicionar um valor no vetor, alterando a ordem existente e ajustando o total de elementos. Gabarito Coment. 4. Considere a seguinte função busca escrita em linguagem C++ : bool busca(int vetor[ ], int n, int tam) { int ini=0, mid; while (ini <= tam) { cout << " x "; mid = (ini + tam)/2; if (vetor[mid] == n) return true; else if (n > vetor[mid]) ini = mid+1; else tam = mid-1; } return false; } Qual a quantidade total de impressões da letra x nas buscas pelos números n = 4, n = 2 e n = 0 no vetor [1,2,3,4,5,6,7,8], sendo tam = 7 ? int vetor[] = {1,2,3,4,5,6,7,8}; busca(vetor, 4, 7); busca(vetor, 2, 7); busca(vetor, 0, 7); 9 4 6 5 8 5. Os métodos de ordenação são muito utilizados para facilitar a recuperação posterior de itens ordenados. Existem vários métodos de ordenação, por esse motivo, assinale corretamente a alternativa que mostra o nome do método que utiliza a estratégia de ordenação por trocas de vizinhos e é considerado o método mais simples. Seleção Hash Binária Inserção Bolha Gabarito Coment. 6. Sobre o funcionamento da busca binária, é correto afirmar que dividindo seu vetor em duas metades. Se o item for menor que o item que está na metade do vetor, o item foi encontrado. Se o item for igual ao item que está na metade do vetor, o item não foi encontrado. Se o item for igual ao item que está na metade do vetor, o item foi encontrado. Se o item for menor que o item que está na metade do vetor, procure na segunda metade, ou seja, a da direita. Se o item for maior que o item que está na metade do vetor procure na primeira metade, ou seja, a da direita. Gabarito Coment. 7. Marque a afirmativa correta para a "Ordenação em Listas Lineares Sequenciais". É o processo pelo qual um conjunto de dados é colocado em uma ordem crescente ou decrescente. Consiste em adicionar um valor no vetor, alterando a ordem existente e ajustando o total de elementos. Consiste em fazer uma busca em um vetor já ordenado, dividindo o espaço de busca ao meio e verificando se o dado está no meio ou, antes do meio ou depois do meio. Consiste em fazer uma busca em um vetor desordenado, dividindo o espaço de busca ao meio e verificando se o dado está no meio ou, antes do meio ou depois do meio. Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos. Gabarito Coment. 8. É correto afirmar sobre o funcionamento da busca sequencial. Os elementos são pesquisados de acordo com o índice. Pior caso: o elemento está no último índice do meu vetor. Os elementos são pesquisados de acordo com o índice. Melhor caso: o elemento está no último índice do meu vetor. Os elementos são pesquisados aleatoriamente. Pior caso: o elemento está no último índice do meu vetor. Os elementos são pesquisados de acordo com o índice. Melhor caso: o elemento está no meio do meu vetor. Os elementos são pesquisados de acordo com o índice. Pior caso: o elemento está no primeiro índice do meu vetor. ESTRUTURA DE DADOS – LISTA 1. Considere uma lista com n livros, em que cada livro é modelado pela struct : struct Livro { string titulo, editora, autor; float preco; }; A função X abaixo void X (Livro v[ ], int &n, Livro L) { v[n] = L; n++; cout << "Operação realizada com sucesso."; } implementa a operação de : Inserção Busca Ordenação por inserção Inicialização Substituição Gabarito Coment. 2. Analisando o trecho do algoritmo abaixo, pode-se afirmar que se trata de uma operação de: Exibição de um elemento em uma estrutura LIFO Inserção de um elemento em uma estrutura FIFO Inserção de um elemento em uma estrutura LIFO Remoção de um elemento de uma estrutura LIFO Remoção de um elemento de uma estrutura FIFO Gabarito Coment. 3. Considere uma lista sequencial L com n fichas de professores, sendo que cada ficha de professor é modelada pela struct : struct professor { int matricula; char titulo[30]; }; e a lista L é assim declarada : professor L[n]; Assinale o trecho que corretamente exibe todas as matrículas e titulações de todos os n professores de L . for (int i = 0; i < n; i++) cout << L[i] << endl; for (int i = 0; i < n; i++) cout << L[i].matricula << " " << L[i].titulo[30] << endl; for (int i = 0; i < n; i++) cout << L.matricula<< " " << L.titulo << endl; for (int i = 0; i < n; i++) cout << L[i].matricula << " " << L[i].titulo << endl; for (int i = 0; i < n; i++) cout << L.matricula[i] << " " << L.titulo[i] << endl; 4. O que acontece ao se inserir uma informação quando já usamos toda a área disponível do vetor (topo = fim)? inclusão overflow ordenação remoção underflow 5. __________________________ é uma lista linear em que a alocação de memória pode ser estática, e que a forma de armazenamento é contígua ou sequencial na memória. Usamos este tipo de lista quando se tem em mente um tamanho pré-definido, ou seja, quando se sabe até onde a lista pode crescer. Lista Linear Não Alocada Lista Linear Sequencial Lista Não Linear Lista Linear Não Sequencial Lista Linear de Alocação de Memória 6. As estruturas de dados são utilizadas para manter dados ou informações organizados na memória, o que possibilita a otimização do uso destes dados. Porém, as estruturas guardam características especiais na manipulação destes dados, assim deve-se escolher a estrutura certa ou mais adequada para uma determinada aplicação. Portanto marque a opção que representa a melhor estrutura, quando se tem como requisitos principais o acesso aleatório aos dados e alocação destes de forma contínua na memória. Lista Sequencial Pilha Encadeada Pilha Sequencial Lista Encadeada Fila Sequencial Gabarito Coment. 7. Com relação as listas lineares sequenciais: I - Uma lista linear sequencial é um vetor em linguagens estruturadas, também chamado de array. II - Um elemento de uma lista linear sequencial pode ser acessado diretamente através de um índice. III - Uma lista linear sequencial pode ter elementos de um mesmo tipo, ou de tipos diferentes. Apenas a afirmação I está correta. Apenas as afirmações II e III estão corretas. Apenas as afirmações II está corretas. Apenas as afirmações I e III estão corretas. Apenas as afirmações I e II estão corretas. 8. for (int i = 0; i < n; i++) cout << L.matricula << " " << L.nome << endl; for (int i = 0; i < n; i++) cout << L.matricula[i] << " " << L.nome[i] << endl; for (int i = 0; i < n; i++) cout << L[i].matricula << " " << L[i].nome << endl; for (int i = 0; i < n; i++) cout << L[i].matricula << " " << L[i].nome[30] << endl; for (int i = 0; i < n; i++) cout << L[i] << endl; Gabarito Coment.
Compartilhar