Baixe o app para aproveitar ainda mais
Prévia do material em texto
Avaliação On-Line Avaliação: AV1-2011.1EAD - ESTRUTURA DE DADOS - CCT0174 Disciplina: CCT0174 - ESTRUTURA DE DADOS Tipo de Avaliação: AV1 Aluno: Nota da Prova: Nota do Trabalho: Nota da Participação: Total: Prova On-Line Questão: AV12011CCT0174106 (129441) 1 - No desenvolvimento de sistemas devemos utilizar a modularização como forma de melhorar nossos sistemas, inserindo agilidade, facilidade de manutenção e etc. Quando em um programa um determinado pedaço do código ocorre várias vezes vezes fazendo as seguintes atividades: - Lendo alguns valores informados pelo usuário; - fazendo alguns cálculos; - e armazenando o resultado. A melhor solução proposta seria: Pontos da Questão: 1 Criar uma função que receba os dados lidos como parâmetro execute os cálculos e retorne o resultado. Criar uma função fazer os cálculos e exibir o resultado. Criar uma função apenas para leitura dos dados; Escrever o código apenas uma vez e apagar onde ele está sendo repetido. Escrever o código tantas vezes quanto necessário. Questão: AV12011CCT0174102 (129183) 2 - Baseado na declaração do seguinte registro: struct teste{ char coisa[50]; int numero; }; Qual das opções cria respectivamente uma variável e um vetor de 30 posições para o registro declarado de forma correta: Pontos da Questão: 1 Teste variavel, vetor[30]; int teste numero, coisa[50]; struct teste variavel, vetor[30]; struct testes vetor[30], variavel; variavel, vetor[30]: teste; Questão: AV120111CCT01740018 (127098) 3 - O programa a seguir é uma implementação do método de ordenação por seleção. Entretanto, foi cometido um erro na chamada da função “selecao(vet,5)”. Note que o argumento da função que foi passado no lugar do parâmetro “tam” está igual a 5. Para que a ordenação do vetor ocorresse de forma correta o argumento da função deveria ser igual a 10. Analise o código e marque a opção que contém a saída apresentada pelo programa. #include<iostream> using namespace std; void selecao(int vet[], int tam); void main() { int tamanhoDoVetor=10; int vet[]={10,2,5,1,3,8,4,7,9,6}; selecao(vet,5); cout<<"vet[]={"; for(int i=0;i<tamanhoDoVetor;i++) cout<<vet[i]; cout<<"}"; } void selecao(int vet[], int tam) { int j,i, aux,a, temp; for (i=0; i<tam -1; i++) { aux = i; for(j=i+1; j<tam; j++) if(vet[aux] > vet[j] ) aux=j; temp=vet[aux]; vet[aux]= vet[i]; vet[i]=temp; } } Pontos da Questão: 1 vet[ ]={1 2 3 5 4 8 10 7 9 6 } vet[ ]={1 2 3 5 7 8 4 10 9 6 } vet[ ]={1 2 3 5 8 4 7 9 6 10} vet[ ]={1 2 3 5 9 8 4 7 10 6 } vet[ ]={1 2 3 5 10 8 4 7 9 6 } Questão: AV120111CCT0174093 (127841) 4 - Considerando um vetor de elementos do tipo struct professor { char nome[40]; char titulacao[30]; }; Assinale a opção correta que mostra o trecho que determina que Maricota Silva é Mestre em Computação. Pontos da Questão: 1 struct professor p; strcpy("Maricota Silva",p.nome); strcpy("Mestre em Computação.",p.titulacao); professor p; p.nome = "Maricota Silva"; p.titulacao = "Mestre em Computação."; struct professor p; p.nome = "Maricota Silva"; p.titulacao = "Mestre em Computação."; professor p; strcpy(p.nome, "Maricota Silva"); strcpy(p.titulacao, "Mestre em Computação."); professor p; strcmp(p.nome, "Maricota Silva"); strcmp(p.titulacao, "Mestre em Computação."); Questão: AV120111CCT0174084 (127832) 5 - Considere o trecho com a chamada da função muda feita na main : int x = 1000; muda(x); e a definição da função : void muda(int &valor) { valor++; } Assinale a opção correta: Pontos da Questão: 1 A chamada possui erro. A chamada correta é : muda(&x); A função não funcionará, pois o parâmetro da função deveria ser x e não valor. ocorre erro, pois não foi declarada a variável valor na main. ocorrerá mudança na variável x, que passará a valer 1001, após a execução da função muda. não ocorrerá mudança no conteúdo da variável x, que permanecerá com 1000. Questão: AV120111CCT0174100 (128268) 6 - Considere a função que deve implementar a busca binária. Note que ela está incompleta e que você deve completá-la. int buscaBinaria(int v[ ], int valor, int n) // n é o número de elementos existentes em v { int inicio = 0, fim = n – 1, meio; while (inicio <= fim) { meio = ____________ if (valor == __________ return __________ if (valor < ____________) _______________ else ________________ } return -1; } Assinale a opção que mostra a função completa e correta. Pontos da Questão: 1 int buscaBinaria(int v[ ], int valor, int n) // n é o número de elementos existentes em v { int inicio = 0, fim = n - 1, meio; while (inicio <= fim) { meio = (inicio+fim) % 2; if (valor == v[meio]) return meio; if (valor < v[meio]) fim = meio -1; else inicio = meio + 1; } return -1; } int buscaBinaria(int v[ ], int valor, int n) // n é o número de elementos existentes em v { int inicio = 0, fim = n - 1; while (inicio <= fim) { if (valor < v[inicio]) fim = inicio -1; else inicio = fim + 1; } return -1; } int buscaBinaria(int v[ ], int valor, int n) // n é o número de elementos existentes em v { int inicio = 0, fim = n - 1, meio; while (inicio <= fim) { meio = (inicio+fim); if (valor == v[meio]) return meio; if (valor != v[meio]) fim = meio -1; else inicio = meio + 1; } return -1; } int buscaBinaria(int v[ ], int valor, int n) //n é o número de elementos existentes em v { int inicio = 0, fim = n - 1, meio; while (inicio <= fim) { meio = (inicio+fim); if (valor <= v[meio]) return meio; else inicio = meio + 1; } return -1; } int buscaBinaria(int v[ ], int valor, int n) // n é o número de elementos existentes em v { int inicio = 0, fim = n - 1, meio; while (inicio <= fim) { meio = (inicio+fim)/2; if (valor == v[meio]) return meio; if (valor < v[meio]) fim = meio -1; else inicio = meio + 1; } return -1; } Questão: AV120111CCT01740017 (127096) 7 - Dentre os algoritmos de pesquisa ou busca em vetores, os mais difundidos são: a busca sequencial e a busca binária. Leia as sentenças abaixo e marque a assinale a resposta correta: I. Para um vetor que armazena de forma ordenada uma quantidade bastante considerável de dados, se considerarmos que o dado a ser procurado não encontra-se no vetor, o algoritmo da busca sequencial será mais rápido em chegar a esta conclusão, que o algoritmo da busca binária. II. O algoritmo da busca binária baseia-se no princípio da “divisão e conquista”, isto é, o espaço de busca é dividido em espaços menores de modo a simplificar a tarefa a ser realizada. III. Para um vetor que armazena de forma ordenada uma quantidade bastante considerável de dados, se considerarmos que o dado a ser procurado encontra-se entre as primeiras posições do vetor, o algoritmo da busca sequencial será mais rápido em encontrar o dado que o algoritmo da busca binária. IV. Quando é realizada uma busca em um vetor, normalmente não se tem ideia em que posição o dado a ser buscado se encontra no vetor, ou mesmo se o dado buscado não está no vetor. E sendo assim, no caso de vetores ordenados o algoritmo de busca binária é muito mais eficiente que o algoritmo de busca sequencial, na maioria dos casos. Pontos da Questão: 1 Apenas a III está errada. I e IV estão corretas. I, II e III estão corretas. III e IV estão erradas. Apenas a I está errada. Questão: AV120111CCT0174086 (127834) 8 - Assinale a opção correta. Considere o seguinte trecho na main : int v[ ] ={10,20,30,40}; Eureka(v); sendo a função void Eureka(int v[ ]) { for (int i = 0; i < 4; i++) v[i] = 2 * i; } Após a execução da função Eureka, v armazenará os seguintes valores : Pontos da Questão: 1 0 20 40 60 20 40 6080 1 2 4 6 0 2 4 6 8 0 2 4 6 Questão: AV120111CCT0174006 (127056) 9 - Sabe-se que um protótipo de uma função é o cabeçalho da função com ;(ponto-e-vírgula) ao final. E que nas funções a passagem de parâmetros se dá por valor ou por referência. Para o protótipo: void troca(float&,float&); pode-se dizer que: Pontos da Questão: 1 É um protótipo de função que recebe dois argumentos que são endereços que armazenam números reais, por passagem por referência. E a função não retorna nada para a função chamadora. É um protótipo de função que recebe dois argumentos por passagem de valor. Os dois do tipo real e retorna, para a função chamadora, um valor inteiro. É um protótipo de função que recebe dois argumentos reais por passagem de valor e não retorna nada para função chamadora. É um protótipo de função que recebe dois argumentos por passagem de valor. Um do tipo char e outro do tipo int, mas não retorna nada para função chamadora. É um protótipo de função que recebe dois argumentos reais e retorna, para a função chamadora, um valor real. Questão: AV120111CCT01740013 (127087) 10 - A definição de uma estrutura não cria nenhuma variável, para criar uma variável do tipo estrutura, deve-se incluir uma instrução de declaração de variável. E como outras variáveis na linguagem C++, as variáveis do tipo estrutura podem ser inicializadas logo após a sua criação. Marque a alternativa CORRETA para inicialização de uma variável do tipo Aluno, cuja a estrutura é apresentada a seguir: struct Aluno { int mat; float nota[3]; char nome[50]; }; Pontos da Questão: 1 Aluno Jose={"Jose Gomes dos Santos",5.0,5.8,5.7,201001}; Aluno Jose={201001,5.0,5.8,5.7,"Jose Gomes dos Santos"}; Aluno Jose={5.0;5.8;5.7;"Jose Gomes dos Santos",201001}; Aluno Jose={201001;5.0;5.8;5.7;"Jose Gomes dos Santos"}; Aluno Jose={5.0,5.8,5.7,"Jose Gomes dos Santos",201001};
Compartilhar