Baixe o app para aproveitar ainda mais
Prévia do material em texto
09/11/2018 EPS http://estacio.webaula.com.br/Classroom/index.html?id=2200085&classId=982800&topicId=2652602&p0=03c7c0ace395d80182db07ae2c30f034… 1/5 CCT0753_EX_A3_201708105212_V1 ESTRUTURA DE DADOS 3a aula Lupa Vídeo PPT MP3 Exercício: CCT0753_EX_A3_201708105212_V1 02/10/2018 12:26:32 (Finalizada) Aluno(a): BRUNO EUFRASIO ALVES 2018.3 EAD Disciplina: CCT0753 - ESTRUTURA DE DADOS 201708105212 1a Questão Marque a afirmativa correta para a "Inserção em lista linear sequencial ordenada". 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 adicionar um valor no vetor, alterando a ordem existente e ajustando o total de elementos. É 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. Explicação: Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos. Só pode ocorrer, no entanto, se a lista não estiver cheia. 2a Questão 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 : -> (seta). * (asterisco). & (e comercial ou eitza). ∙ (ponto). , (vírgula). Explicação: Por definição, o operador que permite acessar os campos de uma variável struct é o ponto (.). 09/11/2018 EPS http://estacio.webaula.com.br/Classroom/index.html?id=2200085&classId=982800&topicId=2652602&p0=03c7c0ace395d80182db07ae2c30f034… 2/5 3a 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; } 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; } int i = 0; while( i < 25) { cin >> lista[i].nome; cin >> lista[i].cargo; i ++; } for (int i = 0; i < 25; i++) { cin >> lista[i].nome; cin >> lista[i].nota; } Explicação: Analisando cada item : for (int i = 0; i <= 25; i++) { cin >> lista[i].nome; cin >> lista[i].nota; } >> Falso. Veja que se há 25 itens, os índices começarão de 0 e irao até 24 e não 25. for (int i = 0; i < 25; i++) { cin >> lista[i]->nome; cin >> lista[i]->nota; } >> Falso. Para acessar o campo de struct é ponto e não seta. lista[i] é uma struct e não um ponteiro. for (int i = 0; i < 25; i++) { cin >> lista->nome; cin >> lista->nota; } >> Falso. Para acessar o campo de struct é ponto e não seta. lista é um vetor e lista[i] é um componente de lista. Usamos o operador seta quando temos ponteiro para struct. for (int i = 0; i < 25; i++) { cin >> lista[i].nome; cin >> lista[i].nota; } >> Verdadeiro. int i = 0; while( i < 25) { cin >> lista[i].nome; cin >> lista[i].cargo; i ++; } >> Falso, porque foi pedido nome e nota e não cargo. 4a Questão 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. int ordena(float v[], float valor, int n) { int ini = 0, fim = n -1, meio; 09/11/2018 EPS http://estacio.webaula.com.br/Classroom/index.html?id=2200085&classId=982800&topicId=2652602&p0=03c7c0ace395d80182db07ae2c30f034… 3/5 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; } int ordena(float v[], float valor, int n){ for (int i = 0; i < n; i++) if (v[i] == valor) return i; 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; } } 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; } 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 Coment. 5a 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, III e IV. 09/11/2018 EPS http://estacio.webaula.com.br/Classroom/index.html?id=2200085&classId=982800&topicId=2652602&p0=03c7c0ace395d80182db07ae2c30f034… 4/5 estão corretas apenas as afirmativas I, II e IV. estão corretas apenas as afirmativas II, III e IV. estão corretas apenas as afirmativas I, II e III. todas as afirmativas estão corretas. Explicação: Analisando as afirmativas, temos : Afirmativa I : Falso. Vetores e matrizes são agregados homogêneos. Afirmativas II, III e IV : Estão corretas. Basicamente, structs são agregados heterogêneos. Logo, a opção correta é estão corretas apenas as afirmativas II, III e IV. 6a Questão Marque a opção correta, considerando struct Livro { int codigo; float preco; } liv; Livro.liv.codigo = 12345; liv->preco = 30.70; Livro.codigo = 12345; liv.preco = 30.70; Livro->liv.codigo = 12345; 7a 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.5.7; vet[10].aluno.nota=5.7 ; vet[10].nota=5.7; aluno.vet[10]=5.7; aluno.vet[10].nota=5.7;8a 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. vet[3].aluno=6.0; 09/11/2018 EPS http://estacio.webaula.com.br/Classroom/index.html?id=2200085&classId=982800&topicId=2652602&p0=03c7c0ace395d80182db07ae2c30f034… 5/5 aluno[3].media=6.0; aluno[10]=6.0; vet[3].media=6.0; aluno[3].10=6.0;
Compartilhar