Buscar

Estrutura De Dados

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Estrutura De Dados 
Aula 1
		1.
		Para organizar as fotos de minha família com os ancestrais de várias gerações, minha filha usou uma estrutura de dados que é .....  Assinale a opção certa.
	
	
	
	grafo
	
	
	fila
	
	
	lista
	
	
	árvore
	
	
	pilha
	
Explicação:
Conforme gabarito e aula 1.
	
	
	
	 
		
	
		2.
		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."
	
	
	
	grafos
	
	
	listas encadeadas
	
	
	pilhas encadeadas
	
	
	filas encadeadas
	
	
	structs
	
	
	
	 
		
	
		3.
		As estruturas de dados podem ser caracterizadas como sendo uma forma organizada de armazenar dados ou informações na memória, de modo a otimizar o acesso a estes. Muitas vezes existem algoritmos de manipulação dados associados a estas estruturas. Verifique as seguintes sentenças:
I-Filas são estruturas que recuperam os dados na ordem direta em que estes foram  armazenados.
II-As Pilhas são estruturas que recuperam os dados na ordem reversa em que estes foram  armazenados.
III-As Pilhas são estruturas que recuperam os dados na ordem direta em que estes foram  armazenados.
IV-As Filas são estruturas que recuperam os dados na ordem reversa em que estes foram  armazenados.
Marque a alternativa CORRETA:
	
	
	
	As alternativas II e IV estão corretas.
	
	
	Todas as alternativas estão corretas.
	
	
	As alternativas I e III estão corretas.
	
	
	As alternativas I e II estão corretas
	
	
	As alternativas III e IV estão corretas.
	
	
	 
		
	
		4.
		Sobre estrutura de dados, identifique o que está correto afirmar.
I. Pilha é uma estrutura de dados com acesso restrito aos seus elementos, uma vez que eles são colocados e retirados por um único lado e são ordenados pelo princípio LIFO (last in first out). Assim, sempre que um elemento é adicionado ou retirado seu topo é alterado. 
II. Pilha é o tipo de estrutura usada, por exemplo, na avaliação de expressões numéricas, na recursividade e pelos compiladores, na passagem de parâmetros para as funções. 
III. Registro é uma estrutura básica que permite guardar coleções de dados de diferentes tipos, sendo normalmente utilizado quando um objeto tem diferentes atributos, isto é, contém campos de diferentes tipos. 
IV. Lista pode conter um número qualquer de elementos, expandindo-se ou contraindo-se conforme o elementos são inseridos ou retirados. Nesse tipo de estrutura, os acessos tanto podem ser feitos sequencialmente como diretamente. 
V. Fila, assim como a pilha , é uma versão especial de lista, e como tal, seus elementos são ordenados pelo princípio LIFO (last in first out).
	
	
	
	II, IV e V.
	
	
	II, III, IV e V.
	
	
	I, II e III.
	
	
	I, III, IV e V.
	
	
	I, III e V.
	
	
	 
		
	
		5.
		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 Sequencial
	
	
	Lista Encadeada
	
	
	Pilha Encadeada
	
	
	Fila Sequencial
	
	
	
	 
		
	
		6.
		          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
	
	
	Fila
	
	
	 Lista
	
	
	             Pilha
	
	
	              Árvore
	
	
	
	 
		
	
		7.
		Podemos dizer que estrutura de dados é:
	
	
	
	A entrada, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma solução do problema.
	
	
	O que permite o armazenamento e a recuperação de dados independentemente de seu conteúdo.
	
	
	Uma sequência de passos computacionais que transforma uma entrada em uma saída previamente determinada.
	
	
	O meio para armazenar e organizar dados com o objetivo de facilitar o acesso e as modificações.
	
	
	É a saída, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma solução do problema.
	
	
	 
		
	
		8.
		As estruturas de dados podem ser caracterizadas como sendo uma forma organizada de armazenar dados ou informações na memória, de modo a otimizar o acesso a estes. Muitas vezes existem algoritmos de manipulação de dados associados a estas estruturas. 
Verifique as seguintes sentenças:
I-Filas são estruturas que recuperam os dados na ordem direta em que estes foram armazenados.
II-As Pilhas são estruturas que recuperam os dados na ordem reversa em que estes foram armazenados.
III-As Pilhas são estruturas que recuperam os dados na ordem direta em que estes foram armazenados.
IV-As Filas são estruturas que recuperam os dados na ordem reversa em que estes foram armazenados.
Marque a alternativa CORRETA:
	
	
	
	As alternativas I e II estão corretas
	
	
	As alternativas I e III estão corretas.
	
	
	As alternativas II e IV estão corretas.
	
	
	Todas as alternativas estão corretas.
	
	
	As alternativas III e IV estão corretas.
Aula 2
		1.
		Blocos únicos de códigos que realizam diversas tarefas distintas são de difícil manutenção. Portanto, utiliza-se a técnica da modularização de programas, a fim de facilitar a implementação e a manutenção dos programas. Esta técnica tem como principal elemento:
	
	
	
	As Estruturas de Dados
	
	
	As Filas
	
	
	Os Grafos
	
	
	As funções
	
	
	Os Vetores
	
	
	
	 
		
	
		2.
		Considere a função a seguir e a chamada da mesma efetuada no programa principal abaixo. Indique a opção que contem o que será impresso.
int executar (int x, int &y) {
    x = y * 2;
    y = ++x;
    return x + y;
}
int main () {
int a=2, b=2, c=2;
c = executar (a, b);
cout << a << ", " << b << ", " << c;
}
	
	
	
	3, 5, 8
	
	
	3, 2, 8
	
	
	2, 2, 9
	
	
	4, 5, 9
	
	
	2, 5, 10
	
Explicação:
Fazendo um teste de mesa, temos o seguinte : 
A execução começa pela main. 
As variáveis a, b e c são iniciadas com 2.
Chama-se a função executar e são passados os valores de a e b, ou seja, 2 e 2.
Ao iniciar a execução da função executar temos que x é passado por valor e y por referência. Iniciando a função temos :
Em x = y * 2;   Daí :  x  recebe 2 * 2, que dá 4
Em y = ++x;     Daí : x é incrementado para 5 e depois y recebe 5.
Então, a soma de x + y é retornado. Ou seja, 10 é retornado.
Mas como y é passado por referência, a variável b na chamada da função foi alterada para 5.  Nada, no entanto, ocorreu com a na chamada da função, pois x foi passado por valor.
Ao voltar para main, será impresso  2, 5, 10
Portanto, qualquer outra opção é totalmente inviável.
 
 
	
	
	
	 
		
	
		3.
		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; n = 5; dobro(n); cout << n; return 0; }
	
	
	
	0
	
	
	5
	
	
	20
	
	
	Haverá um erro de compilação
	
	
	10
	
	
	
	 
		
	
		4.
		Na passagem por ____________________ , o endereço da variável da função chamadora é passado para a função chamada e, dessa forma, o valor poderá ser alterado, ou não.
	
	
	
	void
	
	
	referência
	
	
	valor
	
	
	número
	
	
	caracter
	
Explicação:
Esse é o conceito de passagem por referência.
	
	
	
	 
		
	
		5.
		 
	
	
	
	Auxiliar = 111  Numero1 = 1000  Numero2 = 80
	
	
	Auxiliar = 100  Numero1 = 900  Numero2 = 20
	
	
	Auxiliar = 100  Numero1 = 900  Numero2 = 80
	
	
	Auxiliar = 100  Numero1 = 1000  Numero2 = 20
	
	
	Auxiliar = 101Numero1 = 900  Numero2 = 20
	
Explicação:
Acompanhando a execução
Na função main() é declarada a variável valor e inicializada com 1000.
Quando na main(), a função mistério é chamada, é passado o endereço da variável valor. Logo, de forma bem simples, v seria o nome da variável valor para a função misterio(...)
Dentro da função misterio(...), foi declarada uma variável local aux com conteúdo 11
Sendo assim,
aux = aux - 11; Deixará aux com 100
v =  v -  aux ; Deixará v com 900(1000 - 100)
Como a  variável  numero foi declarada globalmente, todas as funções poderão acessá-la e, com isso, alterar seu valor,
numero =  aux  -  numero; Deixará numero com 80(100 - 20)
Dentro da função misterio(...) será exibido Auxiliar = 100 e quando retornar à função main(), serão exibidos Numero1 = 900 Numero2 = 80
Resposta correta: Auxiliar = 100  Numero1 = 900 Numero2 = 80
	
	
	
	
	
	 
		
	
		6.
		No programa abaixo em C++, que sequência de valores serão impressos ? int x; x = 15; if (x > 0) { int x; x = 25; cout << x << endl; } cout << x << endl;
	
	
	
	15 e 25
	
	
	25 e 15
	
	
	15 e 15
	
	
	25 e 25
	
	
	0 e 5
	
Explicação:
Analisando passo a passo, temos :
x é declarado e inicializado com 15. Daí, testa-se a condição do if, que é verdadeira. Em seguida, entra-se no bloco do if onde um outro x é declarado, recebe 25 e é impresso. Terminado o bloco do if, o x local ao bloco do if não é mais enxergado. Então, ao executarmos a última linha do cout, que está fora do if, vemos que o valor de  x impresso é 15.
Logo, a resposta correta é 25 e 15
	
	
	
	 
		
	
		7.
		Para compararmos vetores de char, usaremos a função _____________________ . Para copiarmos o conteúdo de um vetor de char nas posições ocupadas por outro vetor de char, usaremos a função ______________________ .
	
	
	
	strcmp(); e strlen() ;
	
	
	strcmp(); e strcmpi ();
	
	
	strcmp(); e strcat();
	
	
	strcmp(); e strcpy();
	
	
	strcat(); e strcpy() ;
	
Explicação:
Nâo há outra possíbilidade de resposta.  Em cstring estão declaradas as funções da opção correta, que fazem exatamente o que foi mencionado no enunciado.
Ainda a saber :   strcat concatena e strlen conta o número de caracteres
	
	
	
	 
		
	
		8.
		Considere a função Adivinhe , n  =  4 e que X é formado pela sequência "algoritmo".  Assinale a opção que corretamente mostra o vetor Y ao fim da execução da função  Adivinhe.
void Adivinhe (char X[ ], char Y [ ], int n)  {
    int i, j;
    j = 0;
    for ( i = n; i >= 0; i--)
    {
        Y[j] = X[i];
        j++;
    }
    Y[j] = '\0';
}
	
	
	
	algor
	
	
	rogla
	
	
	Ocorre erro, pois a função, que é do tipo void, não retorna o vetor Y.
	
	
	algo
	
	
	ogla
	
Explicação:
Não há outra opção, pois a questão é objetiva. Vejamos passo a passo :
X armazena "algoritmo" e Y será gerado.
	j
	i
	0
	4
	1
	3
	2
	2
	3
	1
	4
	0
	5
	 -1 ... falha o teste i >= 0
A cada rodada do loop temos, considerando os valores de j e i acima, as seguintes atribuições :
Y[0] recebe X[4], que é 'r'
Y[1] recebe X[3], que é 'o'
Y[2] recebe X[2], que é 'g'
Y[3] recebe X[1], que é 'l'
Y[4] recebe X[0], que é 'a'
Y[5] recebe '\0'
Daí, Y será rogla
Aula 3
	
	 
		
	
		1.
		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;
	
	
	vet[10]=aluno.5.7;
	
	
	aluno.vet[10]=5.7;
	
	
	aluno.vet[10].nota=5.7;
	
	
	vet[10].aluno.nota=5.7 ;
	
	
	
	 
		
	
		2.
		Marque a afirmativa correta para a "Inserção em lista linear sequencial ordenada".
	
	
	
	É 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, 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 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.
	
	
	
	 
		
	
		3.
		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;
   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; 
            }
}
	
	
	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){
   for (int i = 0; i < n; i++)
     if (v[i] == valor)
       return i;
   return -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!
	
	
	
	
	
	 
		
	
		4.
		Com relação à struct,  é correto afirmar que :
	
	
	
	Cada elemento da struct  é chamado componente.
	
	
	A struct é sempre definida dentro da main.
	
	
	Cada elemento da struct é denominado membro ou campo, sendo que a struct pode armazenar elementos de tipos diferentes ou não.
	
	
	Não é possível criar um vetor de structs, pois o vetor trabalha apenas com dados do mesmo tipo.
	
	
	Cada elemento da struct é chamado campo e cada campo deve ser, obrigatoriamente, de um tipo de dados distinto de outro campo.
	
	
	
	
	
	 
		
	
		5.
		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].media=6.0;
	
	
	aluno[10]=6.0;
	
	
	aluno[3].10=6.0;
	
	
	vet[3].aluno=6.0;
	
	
	
	 
		
	
		6.
		Marque a opção correta, considerando
struct Livro {
int codigo;
float preco;
} liv;
	
	
	
	Livro.liv.codigo = 12345;
	
	
	Livro->liv.codigo = 12345;
	
	
	Livro.codigo = 12345;
	
	
	liv.preco = 30.70;
	
	
	liv->preco = 30.70;
	
	
	
	 
		
	
		7.
		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;
	
	
	vet[10].aluno.nota=5.7 ;
	
	
	aluno.vet[10]=5.7;
	
	
	vet[10]=aluno.5.7;
	
	
	aluno.vet[10].nota=5.7;
	
	
	
	 
		
	
		8.
		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 II, III e IV.
	
	
	estão corretas apenas as afirmativas I, III e IV.
	
	
	estão corretas apenas as afirmativas I, II 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.
Aula 4
		1.
		Para consultarmos uma estrutura de dados, normalmente, empregamos um tipo de pesquisa de dados. O trecho de programa a seguir refere-se a uma pesquisa por um elemento único (sua primeira ocorrência), em um conjunto de elementos de dados armazenado em uma estrutura de acesso indexado e aleatório. Selecione a opção correspondente ao algoritmo utilizado, no programa, para a referida pesquisa:
int busca(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;
}
	
	
	
	pesquisa indexada
	
	
	pesquisa de cadeias
	
	
	pesquisa binária
	
	
	pesquisa cadeias indexada
	
	
	pesquisa sequencial
	
	
	
	
	
	 
		
	
		2.
		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);
	
	
	
	4
	
	
	5
	
	
	6
	
	
	9
	
	
	8
	
Explicação:
Na 1a. execução da busca... para n = 4 temos impresso :  x
Na 2a. execução da busca ... para n = 2   temos impresso :  x    x
Na 3a. execução da busca ... para n = 0   temos impresso :  x   x   x 
Total de impressões da letra x :  6
	
	
	
	 
		
	
		3.
		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:
	
	
	
	Hash
	
	
	Inserção
	
	
	Binária
	
	
	Bolha
	
	
	Seleção
	
	
	
	
	
	 
		
	
		4.
		Qual papel do for mais interno na função ordena abaixo ?
void ordena( int n, int v[])
{
   int i, j, x;
   for (j = 1; j < n; ++j) {
      x = v[j];
      for (i = j-1; i >= 0 && v[i] > x; --i)
         v[i+1] = v[i];
      v[i+1] = x;
   }
}
	
	
	
	Encontrar o menor valor v[j] que deve ser inserido em v[0..j-1].
	
	
	Encontrar o maior valor de x que deve ser inserido em v[0..j-1].
	
	
	Encontrar o elmento a ser eliminado do vetor
	
	
	Encontrar o valor de v[j] deve em v[0..j-1].
	
	
	Encontrar o ponto onde v[j] deve ser inserido em v[0..j-1].
	
	
	
	
	
	 
		
	
		5.
		Em uma pesquisa sequencial a lista deve estar?
	
	
	
	desordenada somente da metade da lista até o final.
	
	
	sempre desordenada.
	
	
	ordenada ou desordenada.
	
	
	ordenada somente do início até a metade da lista.
	
	
	ordenada somente o primeiro da lista.
	
Explicação:
A busca sequencial pode se usada para listas ordenadas ou não ordenadas, não havendo qualquer restrição a parte ou à  totalidade da lista na ordenação.  Já a busca binária só pode ser usada para listas ordenadas.
	
	
	
	
	
	 
		
	
		6.
		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:
v[10] = {0, 2, 4, 6, 8, 10, 20, 100}
tam = 8
e = -6
É sabido que a mesma retornaria o valor -1, porque:
	
	
	
	Seria o retorno do while
	
	
	É o módulo do valor de e
	
	
	É a posição do elemento e no vetor v
	
	
	Porque ele não achou o elemento na coleção
	
	
	Seria o retorno do segundo if
	
Explicação:
     Veja que para retornar -1 o return m; não foi executado. E para o return m; não poder ser executado,  o teste   if ( v[m] == e )  foi sempre falso.  Logo, retornar -1 é o caso do elemento e = -6 não ser encontrado no vetor v.
 
	
	
	
	 
		
	
		7.
		Sabendo-se que o método de seleção também é um método de ordenação que baseia seu algoritmo em trocas entre os elementos de um vetor, se submetermos a sequencia de inteiros armazenada em um vetor inicialmente na seguinte ordem : 13, 23, 3, 8, 1. Pode-se dizer que quando o menor elemento do vetor alcançar sua posição final, a ordenação apresentada no vetor é:
	
	
	
	1,23,13,8,3
	
	
	1,3,23,8,13
	
	
	1,8,3,23,13
	
	
	1,23,3,8,13
	
	
	1,13,23,8,3
	
	
	
	
	
	 
		
	
		8.
		Marque a afirmativa correta para a "Ordenação em Listas Lineares Sequenciais".
	
	
	
	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.
	
	
	É o processo pelo qual um conjunto de dados é colocado em uma ordem crescente ou decrescente.
	
	
	Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos.
Aula 5
		1.
		Considere as seguintes afirmações sobre Listas Sequenciais:
I  - São estruturas lineares que utilizam as primeiras posições de um vetor para armazenar os dados de interesse.
II - São compostas pelo conjunto dos dados que se deseja armazenar e por uma variável inteira que indica a quantidade de dados armazenados.
III - Os dados são sempre inseridos ou removidos no finalda lista, tomando-se o cuidado de atualizar a quantidade de dados da mesma.
IV - A lista pode admitir ou não admitir que haja dados repetidos (listas podem ser com ou sem repetição).
Marque a opção que contém apenas todas  as afirmações verdadeiras:
	
	
	
	I, II, III, IV
	
	
	I, II, IV
	
	
	I, II, III
	
	
	I, II
	
	
	I, III, IV
	
Explicação:
Analisando cada afirmativa :
 
I  - São estruturas lineares que utilizam as primeiras posições de um vetor para armazenar os dados de interesse.
Verdadeiro.  As inserções vão ocorrendo do início do vetor (índice zero) em direção ao fim.
II - São compostas pelo conjunto dos dados que se deseja armazenar e por uma variável inteira que indica a quantidade de dados
armazenados.
Verdadeiro. Armazenam-se os dados  e controla-se a quantidade de dados na lista.
III - Os dados são sempre inseridos ou removidos no final da lista, tomando-se o cuidado de atualizar a quantidade de dados 
da mesma.
Falso. A inserção pode ser no início,  no meio ou no final da lista. Na verdade, pode ocorrer inserção e remoção em qualquer  posição.
IV - A lista pode admitir ou não admitir que haja dados repetidos (listas podem ser com ou sem repetição).
Verdadeiro.  Uma lista pode ou não ter dados repetidos.
Resposta certa : As afirmativas I, II, IV estão certas
	
	
	
	 
		
	
		2.
		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.
	
	
	
	Fila Sequencial
	
	
	Pilha Encadeada
	
	
	Lista Sequencial
	
	
	Pilha Sequencial
	
	
	Lista Encadeada
	
	
	
	
	
	 
		
	
		3.
		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:
	
	
	
	Está correta apenas a afirmativa II.
	
	
	Estão corretas apenas as afirmativas I e III.
	
	
	Está correta apenas a afirmativa I.
	
	
	Estão corretas apenas as afirmativas I e II.
	
	
	Nenhuma afirmação está correta.
	
Explicação:
Analisando cada afirmativa :
  I. Só podemos ter uma matriz de no máximo duas dimensões. Exemplo: C[100][100].
 Falso.  Podemos ter matrizes unidimensionais, tridimensionais, etc...
 II. Ao declararmos um vetor int A[10], se escrevemos A[2] acessamos o segundo elemento do vetor.
Falso.  Em C++ o índice inicial é zero. Logo, A[2] é o elemento de índice 2, ou seja, o 3o. elemento do vetor.
III. Uma string declarada como char B[30] armazena no máximo 30 caracteres. Escolha a alternativa correta:
Falso. B pode armazenar no máximo 29 caracteres que sejam dados, pois existe uma área para o caracter nulo.
Logo, todas as opções são falsas.
	
	
	
	 
		
	
		4.
		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
	
	
	
	0
	
	
	3
	
	
	4
	
	
	6
	
	
	-1
	
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.
	
	
	
	 
		
	
		5.
		As estruturas de dados em programação são muito utilizadas para tornar o acesso aos dados mais eficiente e organizado. A estrutura de dados considerada mais simples e tem como característica apresentar apenas uma dimensão é:
	
	
	
	Variável
	
	
	Vetor
	
	
	Matriz
	
	
	Função
	
	
	Registro
	
	
	
	
	
	 
		
	
		6.
		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].matricula << " " << L[i].titulo[30] << endl;
	
	
	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 << endl;
	
	
	for (int i = 0; i < n; i++)
cout << L.matricula[i] << " " << L.titulo[i] << endl;
	
	
	for (int i = 0; i < n; i++)
cout << L.matricula << " " << L.titulo << endl;
	
Explicação:
Como L é um vetor de n elementos do tipo professor. Então, para percorrer o vetor de índice i temos que fazer L[i] seguido do ponto seguido do campo, que pode ser matricula ou titulo.
Assiim, a opção correta é 
for (int i = 0; i < n; i++)
   cout << L[i].matricula << " " << L[i].titulo << endl;
	
	
	
	 
		
	
		7.
		São métodos ou algoritmos conhecidos de ordenação de dados por troca:
	
	
	
	busca por ordenação e ordenação shell.
	
	
	bubble sort e quicksort.
	
	
	hashing e bubble sort.
	
	
	quicksort e hashing.
	
	
	ordenação shell e hashing.
	
Explicação:
Bubble sort é o algoritmo mais simples, mas o menos eficientes. Neste algoritmo cada elemento da posição i será comparado com o elemento da posição i + 1, ou seja, um elemento da posição 2 será comparado com o elemento da posição 3. Caso o elemento da posição 2 for maior que o da posição 3, eles trocam de lugar e assim sucessivamente. Por causa dessa forma de execução, o vetor terá que ser percorrido quantas vezes que for necessária, tornando o algoritmo ineficiente para listas muito grandes.
 
O Quicksort é o algoritmo mais eficiente na ordenação por comparação. Nele se escolhe um elemento chamado de pivô, a partir disto é organizada a lista para que todos os números anteriores a ele sejam menores que ele, e todos os números posteriores a ele sejam maiores que ele. Ao final desse processo o número pivô já está em sua posição final. Os dois grupos desordenados recursivamente sofreram o mesmo processo até que a lista esteja ordenada.
 
	
	
	
	 
		
	
		8.
		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 :
	
	
	
	Substituição
	
	
	Ordenação por inserção
	
	
	Inserção
	
	
	Busca
	
	
	Inicialização
Avaliação Parcial
	Estão entre algumas das possíveis formas de estruturas de dados:
		
	 
	Listas, vetores, cin
	
	cout, Funções, vetores
	 
	Árvores binárias, pilhas, vetores
	
	Grafos, funções, fila
	
	Árvores binárias, pilhas, algoritmos
	Respondido em 14/10/2019 11:59:57
	
	
	
	2a Questão (Ref.:201807172877)
	Acerto: 0,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
	
	a1, b2, c1, d1.
	
	a1, b1, c2, d2.
	
	a2, b2, c1, d2.
	 
	a2, b1, c2, d1.
	Respondido em 14/10/2019 12:00:54
	
	
	
	
	
	
	
	3a Questão (Ref.:201807181356)
	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.
	
	Passagem por valor.
	
	Envio de valor.
	
	Registro.
	
	Envio de inteiro.
	Respondido em 14/10/2019 12:03:36
	
	
	
	
	
	
	
	4a Questão (Ref.:201807412084)
	Acerto: 1,0  / 1,0
	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; n = 5; dobro(n); cout << n; return 0; }
		
	
	Haverá um erro de compilação
	
	10
	
	0
	 
	5
	
	20
	Respondido em 14/10/2019 12:05:19
	
	
	
	5a Questão (Ref.:201807751193)
	Acerto: 1,0  / 1,0
	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[10]=6.0;
	 
	vet[3].media=6.0;
	
	vet[3].aluno=6.0;
	
	aluno[3].media=6.0;
	
	aluno[3].10=6.0;
	Respondido em 14/10/2019 12:21:46
	
	
	
	6a Questão (Ref.:201807852921)
	Acerto: 1,0  / 1,0
	Marque a opção correta, considerando
struct Livro {
int codigo;
float preco;
} liv;
		
	
	Livro.codigo = 12345;
	
	Livro->liv.codigo = 12345;
	
	Livro.liv.codigo = 12345;
	
	liv->preco = 30.70;
	 
	liv.preco = 30.70;
	Respondido em 14/10/2019 12:06:41
	
	
	
	7a Questão (Ref.:201808319662)
	Acerto: 1,0  / 1,0
	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);
		
	
	5
	
	4
	
	8
	
	9
	 
	6
	Respondido em 14/10/2019 12:08:04
	
	
	
	8a Questão (Ref.:201807180826)
	Acerto: 1,0  / 1,0
	O seguinte trecho de programa abaixo representa qual tipo de estrutura de ordenação?
void ordenar(float v[], int n) // n é o no. de elementos em v
{
 int i , // índice
 aux, // auxiliar para troca
trocou = true,
fim = n - 1;
while (trocou)
{
    trocou = false; // sinaliza que é falso que trocou
     for (i = 0; i < fim; i++)
     {
       if (v[i] > v[i+1])
       {
         aux = v[i];
         v[i] = v[i+1];
         v[i+1] = aux;
         // sinaliza que é verdadeiro que trocou
         trocou = true;
        } // fim if
    } // fim for
 fim--; // decrementa o fim
} // fim while
} // fim da função
		
	
	Mergesort
	
	Shellsort
	
	Quicksort
	 
	Bublesort
	
	Heapsort
	Respondido em 14/10/2019 12:09:11
	
	
	
	
	
	
	
	9a Questão (Ref.:201808303573)
	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:
		
	
	Está correta apenas a afirmativa II.
	
	Estão corretas apenas as afirmativas I e III.
	
	Estão corretas apenas as afirmativas I e II.
	
	Está correta apenas a afirmativa I.
	 
	Nenhuma afirmação está correta.
	Respondido em 14/10/2019 12:10:43
	
	
	
	10a Questão (Ref.:201807744413)
	Acerto: 1,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
		
	
	0
	
	3
	
	4
	 
	-1
	
	6
 
AP 2
	
	1a Questão (Ref.:201807180962)
	Acerto: 1,0  / 1,0
	Podemos dizer que estrutura de dados é:
		
	
	É a saída, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma solução do problema.
	
	Uma sequência de passos computacionais que transforma uma entrada em uma saída previamente determinada.
	
	O que permite o armazenamento e a recuperação de dados independentemente de seu conteúdo.
	 
	O meio para armazenar e organizar dados com o objetivo de facilitar o acesso e as modificações.
	
	A entrada, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma solução do problema.
	Respondido em 14/10/2019 12:27:18
	
	
	
	
	
	
	
	2a Questão (Ref.:201807852803)
	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
	
	structs
	
	filas encadeadas
	
	listas encadeadas
	 
	grafos
	Respondido em 14/10/2019 12:28:21
	
	
	
	3a Questão (Ref.:201808236465)
	Acerto: 1,0  / 1,0
	Considere os trechos abaixo:
int valor = 100;
void eureka (int &z)   {
    int temp = 25;
     z--;
     temp = temp - 10;
     valor = valor - temp;
     cout << "Auxiliar = " << temp << endl;
}
int main()  {
     int R = 1000;
     eureka(R);
     cout << "Result = " <<  R << "  Valor  = " << valor << endl;
}
Assinale a opção correta.
		
	
	Será impresso
Auxiliar = 15
Result = 1000 Valor = 85
sendo que z é um parâmetro passado por referência
	
	Será impresso
Auxiliar = 15
Result = 1000  Valor = 85
sendo que z é um  parâmetro passado por valor
 
 
	
	Será impresso
Auxiliar = 15
Result = 1000  Valor = 100
sendo que z é um  parâmetro passado por referência
 
 
	
	Será impresso
Auxiliar = 15
Result = 999  Valor = 85
sendo que z é um  parâmetro passado por valor
 
 
	 
	Será impresso
Auxiliar = 15
Result = 999  Valor = 85
sendo que z é um  parâmetro passado por referência
 
 
	Respondido em 14/10/2019 12:30:07
	
	
	
	4a Questão (Ref.:201808236480)
	Acerto: 1,0  / 1,0
	Considere a função Adivinhe , n  =  4 e que X é formado pela sequência "algoritmo".  Assinale a opção que corretamente mostra o vetor Y ao fim da execução da função  Adivinhe.
void Adivinhe (char X[ ], char Y [ ], int n)  {
    int i, j;
    j = 0;
    for ( i = n; i >= 0; i--)
    {
        Y[j] = X[i];
        j++;
    }
    Y[j] = '\0';
}
		
	
	ogla
	
	algo
	
	algor
	
	Ocorre erro, pois a função, que é do tipo void, não retorna o vetor Y.
	 
	rogla
	Respondido em 14/10/2019 12:31:29
	
	
	
	5a Questão (Ref.:201807820671)
	Acerto: 1,0  / 1,0
	Pode-se definir uma estruturaheterogê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;
	 
	vet[10].nota=5.7;
	
	aluno.vet[10].nota=5.7;
	
	vet[10]=aluno.5.7;
	Respondido em 14/10/2019 12:31:49
	
	
	
	6a Questão (Ref.:201807751193)
	Acerto: 1,0  / 1,0
	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].10=6.0;
	
	aluno[3].media=6.0;
	 
	vet[3].media=6.0;
	
	aluno[10]=6.0;
	
	vet[3].aluno=6.0;
	Respondido em 14/10/2019 12:32:02
	
	
	
	7a Questão (Ref.:201807181243)
	Acerto: 1,0  / 1,0
	O resultado do concurso para o cargo de uma empresa está armazenado em um vetor, que contém em cada um de seus elementos o número de inscrição, o nome e a nota obtida pelo candidato. Este vetor está ordenado pelo número de inscrição. Para realização de uma consulta que, dado um número de inscrição, apresenta o nome e nota do candidato, um programador utilizou um algoritmo de busca que realiza sucessivas divisões no vetor, comparando o número de inscrição procurado com o número de inscrição do candidato posicionado no meio do vetor. Se o candidato posicionado do meio do vetor tiver o número de inscrição igual ao número de inscrição procurado, a busca termina com sucesso. Caso contrário, se candidato posicionado do meio do vetor tiver número de inscrição menor que o procurado, então a busca continua na metade posterior do vetor. E finalmente, se candidato posicionado do meio do vetor tiver número de inscrição maior que o procurado, a busca continua na metade anterior do vetor. O algoritmo utilizado pelo programador trata-se do método denominado busca:
		
	
	randômica.
	
	por contagem.
	
	linear.
	
	por comparação.
	 
	binária.
	Respondido em 14/10/2019 12:34:29
	
	
	
	
	
	
	
	8a Questão (Ref.:201807180775)
	Acerto: 1,0  / 1,0
	Em uma pesquisa sequencial a lista deve estar?
		
	
	desordenada somente da metade da lista até o final.
	 
	ordenada ou desordenada.
	
	ordenada somente do início até a metade da lista.
	
	ordenada somente o primeiro da lista.
	
	sempre desordenada.
	Respondido em 14/10/2019 12:35:38
	
	
	
	
	
	
	
	9a Questão (Ref.:201807828866)
	Acerto: 1,0  / 1,0
	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 :
		
	
	Busca
	 
	Inserção
	
	Substituição
	
	Inicialização
	
	Ordenação por inserção
	Respondido em 14/10/2019 12:37:34
	
	
	
	
	
	
	
	10a Questão (Ref.:201807386081)
	Acerto: 1,0  / 1,0
	
		
	
	for (int i = 0; i < n; i++)
   cout << L[i] << 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[30] << endl;
	
	for (int i = 0; i < n; i++)
   cout << L.matricula << "  "  << L.nome << endl;
	 
	for (int i = 0; i < n; i++)
   cout << L[i].matricula << "  "  << L[i].nome << endl;
Aula 6
		1.
		Ao remover um elemento armazenado em uma pilha é necessário a atualização da variável (Topo) indicadora de posição. Qual das alternativas abaixo está correta?
	
	
	
	Após a operação de remoção decrementa a variável indicadora de posição.
	
	
	Após a operação de remoção incrementa a variável indicadora de inicio.
	
	
	Após a operação de remoção incrementa a variável indicadora de posição.
	
	
	Antes a operação de remoção decrementa a variável indicadora de posição.
	
	
	Antes da operação de remoção incrementa a variável indicadora de posição.
	
	
	
	
	
	 
		
	
		2.
		O que acontece quando tentamos retirar um elemento de uma pilha que já está vazia?
	
	
	
	Remoção.
	
	
	Overflow.
	
	
	Ordenação.
	
	
	Inclusão.
	
	
	Underflow.
	
Explicação:
Por definição, a respota certa é underflow. 
Usa-se overflow quando a pilha está cheia e tentamos inserir
	
	
	
	
	
	 
		
	
		3.
		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 é:
	
	
	
	Pilha
	
	
	Ponteiro
	
	
	Matriz
	
	
	Fila
	
	
	Struct
	
	
	
	
	
	 
		
	
		4.
		Quando as inserções e as remoções ocorrem sempre no mesmo lado da lista, trata-se de uma estrutura de dados denominada
	
	
	
	Lista Circular
	
	
	Fila
	
	
	Vetor
	
	
	Lista Encadeada
	
	
	Pilha
	
Explicação:
Por definição, na estrutura de dados pilha, insere-se em uma extremidade e retira-se da mesma extremidade, pois a lógica que rege tal estrutura de dados é a lógica LIFO.
 
	
	
	
	 
		
	
		5.
		A técnica LIFO, utilizada em programação estruturada, é fundamentada no conceito de:
	
	
	
	Array.
	
	
	Pilha.
	
	
	Fila.
	
	
	Ponteiro.
	
	
	Loop.
	
	
	
	
	
	 
		
	
		6.
		Na pequena mercearia do Sr. Manuel os pedidos são anotados no papel e assim que montam um lote com 10 listas de compras dos fregueses, as entregas começam. As compras de cada freguês são postas em uma caixa. As caixas são organizadas no veículo de entrega respeitando a ordem da entrega, ou seja, a 1a. caixa a ser entregue fica na frente das demais caixas e assim, sucessivamente. Dessa forma, a última caixa a ser entregue ficará no final do veículo, após todas as outras caixas que deverão ser entregues primeiro. Qual a estrutura de dados mais adequada que traduz a organização das pizzas no veículo de entrega ?
	
	
	
	fila
	
	
	grafo
	
	
	árvore
	
	
	lista
	
	
	pilha
	
	
	
	
	
	 
		
	
		7.
		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 a ordem reversa dos de armazenamento de dados e alocação destes de forma contínua na memória.
	
	
	
	Fila Sequencial
	
	
	Pilha Sequencial
	
	
	Pilha Encadeada
	
	
	Lista Encadeada
	
	
	Lista Sequencial
	
	
	
	 
		
	
		8.
		Um programador recebeu a tarefa de construir um programa que receba uma cadeia de caracteres e verifique se esta cadeia de caracteres é um PALÍNDROME, sabendo-se que um PALÍNDROME apresenta a mesma sequência de caracteres da esquerda pra direita, quanto da direita para esquerda, marque a opção que possui a estrutura de dados mais adequada a este programa.
	
	
	
	Pilha Sequencial
	
	
	Grafos
	
	
	Lista Sequencial
	
	
	Fila Sequencial
	
	
	Árvores
Aula 7
		1.
		Complete os espaços na afirmativa abaixo e assinale a alternativa que apresenta as respostas corretas: O escalonamento.................... é do tipo.................., em que o processo que chegar primeiro na fila de pronto é o escolhido para ser executado.
	
	
	
	SJF (Shortest-Job-First), preemptivo.
	
	
	LIFO, não-preemptivo.
	
	
	Circular, não-preemptivo.
	
	
	Por prioridades, preemptivo.
	
	
	FIFO, não-preemptivo.
	
Explicação:
O algoritmo de escalonamento FIFO (First in, first out, em português: "O primeiro a entrar é o primeiro a sair, sigla PEPS), ou FCFS(First come, first served, em português: "O primeiro a chegar é o primeiro a ser servido") é conhecido popularmente por Algoritmo de Fila Simples, é uma estrutura de dados que apresenta o seguinte critério: O primeiro elemento a ser retirado é o primeiro que tiver sido inserido, é um algoritmo de escalonamento não preemptivo que entrega a CPU os processos pela ordem de chegada. Ele executa o processo como um todo do inicio ao fim não interrompendo o processo executado até ser finalizado, então quando um novo processo chega e existe um ainda em execução ele vai para uma fila de espera. Esta fila de espera nada mais é do que uma fila que organiza os processos que chegam até eles serem atendidos pela CPU.
Neste escalonamento todos os processos tendem a serem atendidos (por isso evita o fenômeno do starvation) ao menos que um processo possua um erro ou loop infinito. O loop infinito irá parar a máquina, pois com o FIFO não terá como dar continuidade a execução dos processos que estão aguardando na fila de espera.
O algoritmo FIFO não garante um tempo de resposta rápido pois é extremamente sensível a ordem de chegada de cada processo e dos antecessores (se existirem) e se processos que tendem a demorar mais tempo chegarem primeiro o tempo médio de espera e o turnaround acabam sendo aumentados.
	
	
	
	 
		
	
		2.
		Para organizar o acesso dos processos que demandam recursos do computador (uso da CPU, acesso ao disco rígido e a outros dispositivos de Entrada e Saída), o Sistema Operacional gerencia essas demandas colocando os processos requisitantes em:
	
	
	
	Árvores
	
	
	Listas
	
	
	Filas
	
	
	Structs
	
	
	Pilhas
	
Explicação:
Um exemplo de aplicação de fila : fila de processos para CPU. O primeiro processo a chegar fará uso da CPU. O mesmo para os dispostivos de I/O.
	
	
	
	 
		
	
		3.
		O que acontece quando se deseja inserir um elemento em uma FILA que já está cheia?
	
	
	
	Enqueue.
	
	
	Underflow.
	
	
	Dequeue.
	
	
	Overflow.
	
	
	A inserção é feita sem problema.
	
	
	
	
	
	 
		
	
		4.
		Pode-se citar os seguintes exemplos de aplicação da estrutura fila: Fila de arquivos para impressão:
· Atendimento de processos requisitados a um sistema operacional.
· Buffer para gravação de dados em mídia.
· O tratamento do armazenamento das teclas que estão sendo digitadas antes da tecla enter ser pressionada.
Agora analise as seguintes afirmativas:
 I- Uma fila guarda a ordem direta em que os elementos foram armazenados.
 II- Uma fila guarda a ordem reversa em que os elementos foram armazenados.
 III- O algoritmo que é implementado em uma fila é baseao no princípio: " O último a entrar é o primeiro a sair".
IV- O algoritmo que é implementado em uma fila é baseao no princípio: " O primeiro a entrar é o primeiro a sair".
 Marque a alternativa correta:
	
	
	
	I e III estão corretas
	
	
	II e Iv estão corretas
	
	
	II e III estão corretas
	
	
	Apenas a IV está correta
	
	
	I e IV estão corretas
	
	
	
	
	
	
	
	
	
	
	
	 
		
	
		5.
		Usa-se um vetor para se implementar uma fila sequencial, entretanto se nesta estrutura ocorrer diversas operações de remoção e inserção podemos afirmar que:
	
	
	
	A estrutura fila não sofre esgotamento de memória, isto ocorre com as pilhas já que implementam o algoritmo LIFO.
	
	
	A estrutra sofrerá do fenômeno esgotamento de memória, mas se os dados estiverem ordenados isto não afetará a estrutura.
	
	
	Um vetor é uma estrutura base correta para esta implementação, já que está imune a fenômenos como esgotamento de memória.
	
	
	Um vetor não pode ser usado na implementação de uma fila sequencial apenas em pilhas sequenciais.
	
	
	A estrutra sofrerá do fenômeno chamado esgotamento de memória e logo não poderá mais ser utilizada. A solução é o uso da fila circular.
	
	
	
	 
		
	
		6.
		Seja Q uma estrutura de dados do tipo fila, em que ENQUEUE(X) significa a adição do elemento X à Q e que DEQUEUE(), a retirada de um elemento. Q está inicialmente vazia e sofre a seguinte sequencia de operações:
ENQUEUE(1)
ENQUEUE(2)
DEQUEUE()
ENQUEUE(3)
ENQUEUE(4)
DEQUEUE()
DEQUEUE()
ENQUEUE(5)
Ao final da sequencia, a soma dos elementos de que (Q) será?
	
	
	
	5
	
	
	6
	
	
	0
	
	
	9
	
	
	15
	
	
	
	
	
	 
		
	
		7.
		Considere uma estrutura de dados, representada pela variável P, com procedimentos de inclusão, exclusão e consulta do próximo elemento (e) disponível na estrutura, obedecendo às seguintes propriedades:
 Pode-se concluir, então, que P corresponde à seguinte estrutura de dados?
	
	
	
	STRUCT
	
	
	PONTEIRO
	
	
	CONJUNTO
	
	
	LISTA
	
	
	PILHA
	
Explicação:
Pela estrutura apresentada verifica-se ser a de uma Pilha.
	
	
	
	 
		
	
		8.
		IFMT - Técnico em Técnologia da Informação - 2013
   Considere a função insere(x: inteiro), que recebe como parâmetro um número inteiro e o insere em uma Fila, e  ainda, a função remove(), que retira um valor de uma Fila.
   Dada a Fila [3-4-6-8-10], executam-se os comandos na ordem: insere(1), insere(2), remove().
   Após a execução desses comandos, qual será a Fila resultante?
	
	
	
	[4-6-8-10-1-2]
	
	
	[2-3-4-6-8-10]
	
	
	[3-4-6-8-10-1]
	
	
	[2-1-3-4-6-8]
	
	
	[3-4-6-8-10]
	
Explicação:
Dada a Fila [3-4-6-8-10], executam-se os comandos na ordem: insere(1), insere(2), remove().  ?
Temos 3-4-6-8-10 e com a 1a. insere teremos 3-4-6-8-10 - 1
Com a segunda insere teremos 3-4-6-8-10- 1-2
E quando remover um valor, sairá o 1o. da fila. Então, a fila ficará assim : 4-6-8-10- 1-2
Aula 8
		1.
		Sobre listas simplesmente encadeadas, é INCORRETO afirmar que :
	
	
	
	possuem tamanho fixo
	
	
	o ponteiro do último nó é NULL
	
	
	podem implementar pilha e fila dinâmicas
	
	
	os nós da lista são alocados dinamicamente.
	
	
	são acessadas através de um ponteiro para o primeiro nó da lista
	
Explicação:
Por definição, uma lista encadeada não tem tamanho pré-definido, pois os nós da lista são alocados em tempo de execução, de acordo com a demanda.
	
	
	
	 
		
	
		2.
		Marque a afirmativa que represente uma separação.
	
	
	
	Alterar a ordem dos dados da lista do final para o início, atualizando a lista.
	
	
	Intercalar a ordem dos dados da lista do final para o início, atualizando a lista.
	
	
	Consiste em dividir a lista em duas outras listas. A quantidade de nós que cada lista terá, depende da necessidade.
	
	
	Juntar duas listas, colocando uma lista no final de outra, obtendo, ao final, uma só lista resultante.
	
	
	Organizar os dados da lista em ordem crescente ou decrescente.
	
	
	
	
	
	 
		
	
		3.
		As variáveis são na verdade trecho de memórias que armazenam dados de diversas naturezas, portanto sempre que declara-se uma variável, na linguagem C++, é necessário informar o tipo de dado que esta irá armazenar. Um tipo especial de variáveis são os ponteiros, isto é, variáveis que armazenam apenas os endereços de outras variáveis. Assim os ponteiros são usados para que se possa acessar de forma indireta uma outra variável. Sabendo-se disto e supondo que o endereço na memória da variável "a" é 100 e o endereço da memória da variável ponteiro é 200, analise o trecho de código abaixo e marque a alternativa que representa  a saída do programa:
 
	
	
	
	100 100 200
	
	
	100 9 200
	
	
	9 9 200
	
	
	200 9 100
	
	
	9 100 200
	
Explicação:
100 ===> endereço da memória da variável a
9 ===> valor da variável a
200 ===> endereço da memóriada variável ponteiro
	
	
	
	 
		
	
		4.
		Para a criação de uma Fila seqüencial basta iniciar as variáveis de início e final, ou seja, apontá-las para as posições iniciais do vetor. O que alteraria na rotina de inserir se a variável final fosse inicializada com o valor -1 (menos um):
	
	
	
	Após a inserção deve-se fazer o decremento da variável final
	
	
	Após a inserção deve-se fazer o incremento da variável final
	
	
	Após a inserção deve-se fazer o incremento da variável inicio
	
	
	Antes da inserção deve-se fazer o decremento da variável final
	
	
	Antes da inserção deve-se fazer o incremento da variável final
	
	
	
	
	
	 
		
	
		5.
		Em uma aplicação que usa apenas o processo de alocação estática de memória é correto afirmar que:
	
	
	
	A memória utilizada pela aplicação é totalmente alocada após o inicio de sua execução
	
	
	Apenas a memória associada às variáveis do tipo vetor é alocada após o inicio da execução da aplicação
	
	
	Todas as afirmações acima são incorretas
	
	
	A memória utilizada pela aplicação é inicialmente estática, mas pode mudar
	
	
	Toda a memória utilizada pela aplicação não muda durante toda a sua execução
	
	
	
	
	
	 
		
	
		6.
		Considere 
int *ptr, *qtr, *r; 
int a = 10, b = 20; 
 
Após executar cada instrução conforme a ordem dada a seguir : 
ptr = &a; 
qtr = &b; 
 
*ptr = *ptr + *qtr; 
++(*qtr); 
r = qtr; 
qtr = ptr; 
 
assinale a opção que mostra, correta e respectivamente, os valores de *ptr, *qtr , *r , a e b . 
	
	
	
	30 20 0 30 21
	
	
	30 20 20 10 20
	
	
	30 21 21 10 20
	
	
	30 30 21 10 20
	
	
	30 30 21 30 21
	
	
	
	 
		
	
		7.
		Seja a seguinte seqüência de instruções em um programa C++: int *pti; int i = 10; pti = &i; Qual afirmativa é falsa?
	
	
	
	*pti é igual a 10
	
	
	pti é igual a 10
	
	
	ao se executar *pti = 20; i passará a ter o valor 20
	
	
	pti armazena o endereço de i
	
	
	ao se alterar o valor de i, *pti será modificado
	
Explicação:
Analisando cada opção :
	
	pti é igual a 10
	Explicação :  A afirmativa está incorreta porque *pti é igual 10 e não pti é igual a 10.  Note que pti é o endereço de i. Logo, a afirmativa deve ser marcada.
	
	pti armazena o endereço de i
	Explicação :  pti é um ponteiro que recebeu o endereço (&) de i. Logo, a afirmativa está correta e não deve ser marcada.
	
	*pti é igual a 10
	Explicação :  Afirmativa correta e não deve ser marcada, visto que * é o operador de indireção. Como pti aponta para i, logo *pti é i, que vale 10.
	
	ao se executar *pti = 20; i passará a ter o valor 20
	Explicação :  Afirmativa correta e não deve ser marcada, visto que *pti acessa a área apontada por i. Se *pti recebeu 20 significa que i recebeu 20.
	
	 
 
ao se alterar o valor de i, *pti será modificado
 
Explicação : Afirmativa correta e não deve ser marcada, visto que pti aponta para i e dessa forma, *pti é i.
	
	
	
	 
		
	
		8.
		Montei uma biblioteca popular que aceita doações sem limites. Marque a opção que especifica o tipo de lista e o tipo de alocação de memória mais adequados para este problema.
	
	
	
	lista sequencial e alocação dinâmica de memória
	
	
	fila dinâmica e alocação dinâmica de memória
	
	
	pilha dinâmica e alocação dinâmica de memória
	
	
	lista encadeada e alocação dinâmica de memória
	
	
	fila encadeada e alocação dinâmica de memória
Aula 9
		1.
		A pilha é uma estrutura de dados que permite a inserção/ remoção de itens dinamicamente seguindo a norma de último a entrar, primeiro a sair. Suponha que para uma estrutura de dados, tipo pilha, são definidos os comandos:
- PUSH (p, n): Empilha um número "n" em uma estrutura de dados do tipo pilha "p";
- POP (p): Desempilha o elemento do topo da pilha.
Considere que, em uma estrutura de dados tipo pilha p, inicialmente vazia, sejam executados os seguintes comandos:
PUSH (p, 10)
PUSH (p, 5)
PUSH (p, 3)
PUSH (p, 40)
POP (p)
PUSH (p, 11)
PUSH (p, 4)
PUSH (p, 7)
POP (p)
POP (p)
Após a execução dos comandos, o elemento no topo da pilha "p" e a soma dos elementos armazenados na pilha "p" são, respectivamente,
	
	
	
	11 e 80.
	
	
	4 e 80.
	
	
	11 e 29.
	
	
	7 e 40.
	
	
	7 e 29.
	
Explicação:
Passo a Passo:
entra 10 // 10
entra 5 // 5 / 10
entra 3 // 3 / 5/ 10
entra 40 // 40 / 5 /10
retira 40 // 3 / 5 /10
entra 11 // 11 / 3 / 5 /10
entra 4 // 4 /11 / 3 / 5 /10
entra 7 // 7 / 4 / 11 / 3 / 5 /10
retira 7 // 4 / 11 / 3 / 5 /10
retira 4 // 11 / 3 / 5 / 10
Resultado da pilha: 11 / 3 / 5 / 10
Topo: 11
Somatorio da pilha é: 29
	
	
	
	 
		
	
		2.
		Sobre as estruturas de dados existentes podemos afirmar que:
	
	
	
	Na estrutura das Pilhas a manipulação dos dados sempre se dá no topo.
	
	
	A estrutura do tipo LIFO sempre realiza a remoção do elemento mais antigo inserido.
	
	
	Encadeamento estático e dinâmico apresentam o mesmo funcionamento de alocação na estrutura do tipo PILHA.
	
	
	Na estrutura do tipo FIFO, as informações são inseridas no início e removidas do final.
	
	
	Na estrutura do tipo LIFO, as informações são inseridas no início e removidas do final.
	
Explicação:
	
	Na estrutura do tipo FIFO, as informações são inseridas no início e removidas do final.
	Falso.  Fila segue a lógica FIFO, ou seja, o primeiro a entrar será o primeiro a sair. Logo, insere no fim e retira do início da fila.
	
	Na estrutura do tipo LIFO, as informações são inseridas no início e removidas do final.
	Falso.  Pilha segue a lógica LIFO, o último a entrar será o primeiro a sair.  Insere-se no topo   e retira-se do topo , ou seja, da mesma extremidade.
	
	Na estrutura das Pilhas a manipulação dos dados sempre se dá no topo.
	Verdade. SEgue-se a lógica LIFO.
	
	Encadeamento estático e dinâmico apresentam o mesmo funcionamento de alocação na estrutura do tipo PILHA.
	Falso.  No encadeamento estático a alocação é contígua e ocorre antes da execução.  No encadeamento dinâmico a alocação de memória ocorre em tempo de execução e o armazenamento é encadeado.
	
	A estrutura do tipo LIFO sempre realiza a remoção do elemento mais antigo inserido.
 
	
	
Falso.  A remoção se dá no último inserido, ou seja, o mais novo inserido na pilha.
 
 
	
	
	
	 
		
	
		3.
		Sabendo que uma fila encadeada possui seus nós definidos pela :
struct no {
int x;
no *prox;
};
Marque a alternativa que representa corretamente a criação ou alocação do nó na sintaxe do C++ para utilização na fila.
	
	
	
	no *p -> new no;
	
	
	no p -> new no;
	
	
	p *no -> new no;
	
	
	p *no=new no;
	
	
	no *p=new no;
	
	
	
	
	
	 
		
	
		4.
		Sobre uma estrutura de dados do tipo LIFO, observe as seguintes afirmações:
(1) É uma pilha.
(2) Pode ser uma fila com prioridades
(3) É uma estrutura onde o primeiro elemento a entrar é o último a sair.
Sobre estas afirmações marque a opção correta:
	
	
	
	Apenas a afirmação (3) é verdadeira
	
	
	Apenas as afirmações (1) e (3) são verdadeiras
	
	
	Todas as afirmações são verdadeiras
	
	
	Todas as afirmações são falsas
	
	
	Apenas a afirmação (1) é verdadeira
	
	
	
	 
		
	
		5.
		Seja o seguinte exemplo de nodo de uma lista de encadeada:
 
struct nodo{
                     float valor;
                     string produto;
                     nodo * proximo;
           };
Sabendo-se que nesta lista o último nó ou nodo possui o campo próximo nulo (null), marque a alternativa que representa corretamente a operação de busca do último nodo, a partir de um ponteiro pt apontado para o primeiro nodo da lista.
	
	
	
	while(pt->próximo)pt=pt->próximo;
	
	
	while(pt != null)pt=pt->próximo;
	
	
	while(pt->próximo->proximo)pt=pt->próximo;
	
	
	while(próximo)pt=próximo;
	
	
	while(pt->próximo != null)pt=pt->próximo->proximo;
	
	
	 
		
	
		6.
		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;
};
	
	
	
	É 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ó.
	
	
	É 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ó.
	
	
	Basta alocar memória com new e armazenar o resto da divisão do número por 2 no campo dado do novo 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ó.
	
	
	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.
	
	
	
	
	
	 
		
	
		7.
		Assinale a opção correta.  Sobre pilha dinâmica podemos afirmar que :
	
	
	
	só pode ter seus dados impressos no sentido do último nó para o primeiro nó.        
	
	
	insere-se em qualquer posição, antes ou após qualquer nó, visto que é dinâmica.
	
	
	usa o critério FIFO, visto que é dinâmica.
	
	
	é recomendada para qualquer tipo de aplicação em que insere-se no final e retira-se do início.
	
	
	usa o critério LIFO e é implementada usando-se listas encadeadas.
	
	
	
	
	
	 
		
	
		8.
		Estava um aluno estudando Lista Simplesmente Encadeada quando encontrou  em um site a definição da struct nodo e de uma função cujo nome você deverá escolher para substituir XXX nas opções abaixo depois que analisar a função, assumindo que teste foi realizado, permitindo  que a operação fosse realizada.
 
 struct nodo
{
  int info;
  struct nodo *prox;
};
nodo* XXX(nodo *ptr, int valor)
{
  nodo *temp = new nodo;
  ...
  temp->info = valor;   
  temp->prox = ptr;
  return temp;        
}
	
	
	
	RemoveNo
	
	
	ListaNo
	
	
	BuscaNaLista
	
	
	InsereNoFrente
	
	
	InsereNoFim
 
Prova AV
	1a Questão (Ref.: 201807180962)
	Pontos: 1,0  / 1,0
	Podemos dizer que estrutura de dados é:
		
	 
	O meio para armazenar e organizar dados com o objetivo de facilitar o acesso e as modificações.
	
	É a saída, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma solução do problema.
	
	O que permite o armazenamento e a recuperação de dados independentemente de seu conteúdo.
	
	Uma sequência de passos computacionais que transforma uma entrada em uma saída previamente determinada.
	
	A entrada, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma solução do problema.
	
	
	 2a Questão (Ref.: 201807763043)
	Pontos: 1,0  / 1,0
	Considere a função:
void dobro(int x) {
      x = 10 * x;
}
Qual será o valor impresso na tela quando o programa principal for executado?
int main() {
int n;
n = 5;
dobro(n);
cout << n;
return 0;
}
 
		
	 
	5
	
	0
	
	10
	
	50
	
	Haverá um erro de compilação
	
	
	 3a Questão (Ref.: 201807180817)
	Pontos: 0,0  / 1,0
	Qual das seguintes estruturas de dados é classificada como heterogênea?
		
	
	Loop
	
	Fila
	 
	Pilha
	
	Vetor
	 
	Registro
	
	
	 4a Questão (Ref.: 201807751184)
	Pontos: 0,0  / 1,0
	
		
	 
	if(vet[j-1] > vet[j] )
    { 
         aux=vet[j];
         vet[j]= vet[j-1];
         vet[j-1]=aux;      
     }
	
	if(vet[j] == vet[j-1] )
    { 
         aux=vet[j];
         vet[j]= vet[j-1];
         vet[j-1]=aux;      
     }
	
	if(vet[j] < vet[j-1] )
    { 
         aux=vet[j];
         vet[j]< vet[j-1];
         vet[j-1]=aux;      
     }
	 
	if(vet[j-1] < vet[j] )
    { 
         aux=vet[j];
         vet[j]= vet[j-1];
         vet[j-1]=aux;      
     }
	
	if(vet[j] < vet[j-1] )
    { 
         aux=vet[j];
         vet[j-1]= vet[j];
         vet[j-1]=aux;      
     }
	
	
	 5a Questão (Ref.: 201807248459)
	Pontos: 0,0  / 1,0
	São métodos ou algoritmos conhecidos de ordenação de dados por troca:
		
	
	quicksort e hashing.
	 
	bubble sort e quicksort.
	 
	hashing e bubble sort.
	
	busca por ordenação e ordenação shell.
	
	ordenação shell e hashing.
	
	
	 6a Questão (Ref.: 201808179116)
	Pontos: 0,0  / 1,0
	Considere que existe uma rotina para inserir um valor inteiro em uma pilha de inteiros com o protótipo abaixo:       
 int push (int pilha[], int valor, int &topo); //retorno: 1=empilhou; 0=não empilhou
Considere que existe uma função que remove um valor de uma pilha, que possui o protótipo abaixo:
 int pop (int pilha[], int &valor, int &topo);//retorno: 1=desempilhou; 0=não desempilhou
Considere ainda a execução do seguinte trecho do programa principal:
int primeira[5], topoP=-1, segunda[5], topoS=-1, numero;
push (primeira, 3, topoP);
push (primeira, 5, topoP);
pop (primeira, numero, topoP);
push (segunda, numero, topoS);
push (segunda, 7, topoS);
push (primeira, 1, topoP);
    Ao final da execução do techo de código acima, responda, nesta ordem,  quantos valores haverá na pilha primeira,  quantos valores haverá na pilha segunda, qual é o valor no topo da pilha primeira e  qual é o valor no topo da pilha segunda.   
		
	
	2; 1; 1; 5
	
	3; 2; 3; 5
	 
	2; 2; 1; 7
	
	2; 2; 3; 5
	 
	1; 2; 1; 7
	
	
	 7a Questão (Ref.: 201810058555)
	Pontos: 0,0  / 1,0
	Um órgão público adotou dois sistemas de senhas para atender os cidadãos na ordem de chegada. O sistema I atende os não idosos. O sistema II atende os idosos. Nessa situação:
		
	 
	o sistema I, adota o esquema FIFO de organização de dados e o II, o esquema LIFO.
	
	tanto o sistema I, quanto o II, adotam o esquema LIFO de organização de dados.
	
	o sistema I, adota o esquema LIFO de organização de dados e o II, o esquema FIFO.
	
	tanto o sistema I, quanto o II, adotam o esquema vetor de organização de dados.
	 
	tanto o sistema I, quanto o II, adotam o esquema FIFO de organização de dados.
	
	
	 8a Questão (Ref.: 201807803725)
	Pontos: 0,0  / 1,0
	Em uma aplicação que usa apenas o processo de alocação estática de memória é correto afirmar que:
		
	
	A memória utilizada pela aplicação é inicialmente estática, mas pode mudar
	
	Todas as afirmações acima são incorretas
	
	Apenas a memória associada às variáveis do tipo vetor é alocada após o inicio da execução da aplicação
	 
	A memória utilizada pela aplicação é totalmente alocada após o inicio de sua execução
	 
	Toda a memória utilizada pela aplicação não muda durante toda a sua execução
	
	
	 9a Questão (Ref.: 201807421189)
	Pontos: 0,0  / 1,0
	Seja o seguinte exemplo de nodo de uma lista de encadeada:
 
struct nodo{
                     float valor;
                     string produto;
                     nodo * proximo;
           };
Sabendo-se que nesta lista o último nó ou nodo possui o campo próximo nulo (null), marque a alternativa que representa corretamente a operação de busca do último nodo, a partir de um ponteiro pt apontado para o primeiro nodo da lista.
		
	 
	while(pt->próximo)pt=pt->próximo;
	
	while(próximo)pt=próximo;
	
	while(pt->próximo->proximo)pt=pt->próximo;
	 
	while(pt->próximo != null)pt=pt->próximo->proximo;
	
	while(pt != null)pt=pt->próximo;
	
	
	 10a Questão (Ref.: 201807181216)
	Pontos: 0,0  / 1,0
	Uma estrutura de dados em lista duplamente encadeada permite na cadeia movimentos para
		
	
	trás, apenas.
	 
	frente e para trás, apenas.
	
	frente, apenas.
	
	cima e para baixo, apenas.
	 
	cima e para baixo ou para frente e para trás.

Continue navegando