Você está na página 1de 29

ESTRUTURA DE DADOS

Exercício: CCT0260_EX_A1_201401272398 Voltar

Aluno(a): VALERIOS RICARD SOUZA LIMA Matrícula: 201401272398

Data: 02/09/2014 14:28:58 (Finalizada)

1a Questão (Ref.: 201401536897)

Analise as afirmativas abaixo e selecione a alternativa correta.

I Algumas aplicações da estrutura de dados grafo são: Diagrama de Entidade


Relacionamento e Redes de computadores.

II Árvore e lista duplamente encadeada são estruturas não lineares.


III A Fila é uma estrutura não linear e a inserção de um elemento acontece ao final.
IV A Lista é uma das estruturas de dados mais simples, mas não se pode ordená-la.

V O uso de ponteiros é fundamental para construção de listas encadeadas.

I e V são verdadeiras
II E IV são verdadeiras
III e V são verdadeiras
II e V são verdadeiras
I , II e IV são verdadeiras

Gabarito Comentado.

2a Questão (Ref.: 201401865833)


Leia com atenção as afirmativas abaixo e assinale a resposta correta.

I A estrutura de dados que melhor representa os diretórios ou pastas de arquivos do computador é a árvore.
II A estrutura de dados FILA é não linear assim como o Grafo.
III O termo folha em uma estrutura de dados é usado para um nó sem filhos e que tem grau 0,
IV O grau de uma árvore é definido pelo número de subárvores de um nó.
V O grafo é uma estrutura de dados que tem limitação para o número de vértices.
VI Uma das aplicações da estrutura de dados grafo é a Computação Gráfica.

II, IV, V e VI são afirmativas verdadeiras


I, III, IV e VI são afirmativas verdadeiras
II, IV e V são afirmativas verdadeiras
I, II, III e VI são afirmativas verdadeiras
I, II e V são afirmativas verdadeiras

3a Questão (Ref.: 201401566777)


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 ?

pilha
fila
lista
árvore
grafo

4a Questão (Ref.: 201401566513)

O processo de modularização de programa, utiliza funções a fim de


tornar os códigos mais inteligíveis e também possibilitar uma
manutenção mais fácil. Analise o código a seguir e marque a opção
correta:
O programa executa perfeitamente, mas não mostra o valor da media já que esta função não foi
chamada na função main().
O programa não executa corretamente, pois os protótipos estão fora da ordem em que as funções são
descritas.
O programa não executa corretamente pois as funções devem ser descritas antes da função main(),
para que o compilador consiga recohecê-las.
O programa executa perfeitamente independente da ordem das funções já que existem os seus
protótipos.
O programa não executa corretamente, pois o protótipo da função media não apresenta a identificação
dos parâmetros, mas apenas os tipos dos mesmos.

Gabarito Comentado.

5a Questão (Ref.: 201401532449)

Navegadores para internet armazenam os últimos endereços visitados em uma estrutura de


dados. Cada vez que um novo site é visitado, o endereço do site é adicionado na estrutura de
endereços. Quando se aciona o retorno ("back"), o navegador permite que o usuário retorne no
último site visitado e retira o endereço do site da estrutura de dados.

Assinale a estrutura de dados mais adequada para este problema.

lista
fila
pilha
grafo
árvore

Gabarito Comentado.

6a Questão (Ref.: 201401327397)


Estão entre algumas das possíveis formas de se estruturar dados:

Grafos, lista ordenada, vetores.


Algoritmos, lista ordenada, vetores.
Grafos, lista ordenada, algoritmos.
Grafos, algoritmos, fila.
Lista encadeada, vetores, algoritmos.

Gabarito Comentado.

Exercício: CCT0260_EX_A2_201401272398 Voltar

Aluno(a): VALERIOS RICARD SOUZA LIMA Matrícula: 201401272398

Data: 09/09/2014 09:17:24 (Finalizada)


1a Questão (Ref.: 201401530015)
Funções são instrumentos de modularização de programas, que tem como finalidade tornar o código mais legível,
isto é mais fácil de entender, evita replicação de instruções e permite o reuso das funções em outros programas.
Então considere o seguinte código:

#include< iostream >


using namespace std;

int main( )
{
float a=10.0;
float b=4.0;
cout < < media(a,b);
return 0;
}
float media(float x, float y) { return (x+y)/2;}

Marque a alternativa CORRETA:

O código compila normalmente e apresenta como resultado o valor 7.0


O código compila normalmente, pois como a descrição da função float media(float x, float y)está
posicionada após a função int main ( ), não há necessidade do uso de protótipos.
O código não compila, pois a função float media(float x, float y) retorna um valor que seria ser
armazenado em uma variável do tipo float e só então poderia ser usado o comando cout para exibir o
resultado.
O código não compila, pois os parâmetros usados na chamada da função deveriam ser "x" e "y"; porém
a chamada se deu com identificadores "a" e "b".
O código não compila, pois há necessidade de se declarar float media(float, float) como protótipo da
função float media(float x, float y)antes da função principal.

Gabarito Comentado.

2a Questão (Ref.: 201401327781)


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 o valor de vl se o valor n foi encontrado.


Retorna -1 se o valor de vl estiver dentro de v.
Resulta em erro, se o valor de vl não estiver dentro de v.
Retorna a posição de v se o valor vl foi encontrado.
Retorna -1 se o valor de n foi encontrado.

Gabarito Comentado.

3a Questão (Ref.: 201401327750)


As variáveis em programação são utilizadas para armazenar um valor de determinado tipo em um espaço
reservado na memória. Em algumas linguagens de programação podemos declarar, ou seja, reservar um espaço
na memória, fora do escopo da função principal, e fora do escopo de qualquer outra função. Ao fazer a
declaração desta forma estamos declarando uma variável do tipo:

Constante
Global
Local
Real
Inteiro

4a Questão (Ref.: 201401327785)


A declaração de variáveis na programação é o ato de reservar um espaço na memória para poder armazenar
valores de um determinado tipo. Essas variáveis podem ser classificadas como variáveis locais e globais. Sendo
assim, qual das situações abaixo representa melhor o conceito das variáveis globais.

Se modificarmos o valor da variável 'Y' na função "soma", e depois imprimirmos na tela esta variável em
outra função, onde tambem está declarada a variável 'Y', será acusado um erro de compilação.
Em duas funções diferentes temos duas variáveis também diferentes com o mesmo nome apresentando
o mesmo valor.
Em uma função "resul" tem-se uma variável ali declarada por 'T' que recebe o valor inteiro 5. Ao tentar
chamar esta variável em outra função é mencionado um warning.
Se dentro de uma função "mostra" declararmos uma variável 'R' com um determinado valor poderemos
imprimir esta variável em qualquer outra função do programa mostrando o valor atribuído na função
"mostra".
Ao modificar o valor da variável 'X' na função "modifica" seu valor modificado poderá ser apresentado
em qualquer outra função do programa.

Gabarito Comentado.

5a Questão (Ref.: 201401330585)


No programa abaixo, diga em que área de memória serão alocados os elementos de dados y e r,
respectivamente.

#include
using namespace std;
int x, y;
float media( float a, float b )
{ float tmp;
tmp = (a + b ) / 2.0;
return ( tmp );
}
int main()
{
float r;
cout<<"Informe 2 valores: ";
cin>>x>> y;
r = media( x, y );
cout<<"\nMedia = "<< r<<"\n";
system ("pause");
}

( ) área de dados globais / área de pilha


( ) área de pilha / área de registro
( ) área de registro / área de dados globais
( ) área de dados globais / área de registro
( ) área de registro / área de pilha
6a Questão (Ref.: 201401533415)

Observe o programa abaixo e escolha a alternativa que apresenta o retorno da


função chamada pela função main().

O valor retornado corresponde ao índice da variável que


contem o maior número
Retorna 0 porque o nome do vetor da função main(...) é
diferente do nome do vetor da função descobre(...)
O menor número é retornado
O maior número é retornado
O valor retornado corresponde ao índice mais um da variável
que contem o menor número

Gabarito Comentado.

Exercício: CCT0260_EX_A3_201401272398 Voltar

Aluno(a): VALERIOS RICARD SOUZA LIMA Matrícula: 201401272398

Data: 15/09/2014 21:31:12 (Finalizada)

1a Questão (Ref.: 201401327617)


Suponha uma listagem, contendo número de inscrição e pontuação (ordenada pelo número de inscrição) dos
candidatos para o cargo de Analista de Sistemas de uma grande empresa pública. São 1024 candidatos inscritos
e o sistema implementado para consulta do resultado, permite busca binária ou busca sequencial pelo número
de inscrição. O número máximo de comparações executadas se fosse utilizada a busca binária e se fosse
utilizada busca sequencial, respectivamente, seria de:
512 e 1024
10 e 10
9 e 10
1024 e 512
9e9

Gabarito Comentado.

2a Questão (Ref.: 201401327571)


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, procure na segunda metade, ou seja, a da
direita.
Se o item for igual ao item que está na metade do vetor, o item não foi encontrado.
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 foi encontrado.
Se o item for maior que o item que está na metade do vetor procure na primeira metade, ou seja, a da
direita.

Gabarito Comentado.

3a Questão (Ref.: 201401330582)


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 cadeias indexada


pesquisa binária
pesquisa sequencial
pesquisa indexada
pesquisa de cadeias
Gabarito Comentado.

4a Questão (Ref.: 201401327424)


Marque a afirmativa correta para a "Busca ou pesquisa binária".

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.
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.

Gabarito Comentado.

5a Questão (Ref.: 201401327780)


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 de seleção
Pesquisa sequêncial
Pesquisa binária
Tabela Hash
Pesquisa ordenada

Gabarito Comentado.

6a Questão (Ref.: 201401530018)


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 elemento deste vetor.

vet[10]=aluno.5.7;
aluno.vet[10].nota=5.7;
vet[10].aluno.nota=5.7 ;
vet[10].nota=5.7;
aluno.vet[10]=5.7;

Gabarito Comentado.

Exercício: CCT0260_EX_A4_201401272398 Voltar

Aluno(a): VALERIOS RICARD SOUZA LIMA Matrícula: 201401272398

Data: 22/09/2014 19:52:36 (Finalizada)

1a Questão (Ref.: 201401327760)


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:

Binária
Seleção
Bolha
Hash
Inserção

Gabarito Comentado.

2a Questão (Ref.: 201401537260)

Observe a função e o vetor abaixo e acompanhe no teste de mesa até


que i seja 0, j seja 5 e a instrução vet[i]=temp; tiver sido executada.

Assinale a alternativa onde estão presentes os valores corretos de v[i], aux etemp.

6,4e6
67, 3 e 15
18, 2 e 67
67, 4 e 23
23 , 4, e 6

Gabarito Comentado.

3a Questão (Ref.: 201401327672)


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 nome e a nota obtida pelo candidato. Deseja-se que este vetor seja ordenado pela nota, em ordem
decrescente. Sendo o vetor pequeno (poucos elementos), o programador responsável por desenvolver este algoritmo,
escolheu um método de ordenação que executa os seguintes passos:

 Selecione candidato com maior nota entre todos e troque-o com o candidato que está na primeira posição do
vetor;
 Selecione o segundo maior e troque-o com o candidato que está na segunda posição;
 Os passos descritos anteriormente são seguidos para a terceira nota, quarta nota e assim por diante até que reste
apenas um candidato.

O algoritmo utilizado pelo programador trata-se do método de ordenação denominado:

Inserção
Bolha
Quicksort
Heapsort
Seleção

Gabarito Comentado.

4a Questão (Ref.: 201401530022)


Entre os diversos algoritmos de pesquisa existentes, certamente os mais famosos são os da pesquisa
sequencial e o da pesquisa binária. A busca ou pesquisa sequencial pode ser aplicada em vetores
independente destes estarem ordenados, entretanto a busca binária só se aplica em vetores ordenados.
Seja o vetor A= {10,35,41,55,69,70,98}, suponha que o número 70 foi pesquisado pelo algoritmo da
busca sequencial e também pelo algoritmo da busca binária, ambos algoritmos realizam testes nos
elementos do vetor até achar o que procuram ou definirem que o elemento não se encontra no vetor.
Sendo assim marque a alternativa que expressa o número de testes realizados pela busca sequencial e o
número de testes realizados pela busca binária, respectivamente, até encontrarem o 70.

6e2
6e4
7e1
6e1
5e5

Gabarito Comentado.

5a Questão (Ref.: 201401327417)


Marque a afirmativa correta para a "inserção incremental".
A técnica é boa quando os dados ficam uniformemente distribuídos entre os seus compartimentos.
Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos.
É um tipo de sequenciação por intercalação.
Os pivôs são escolhidos aleatoriamente.
É um tipo de ordenação por intercalação

6a Questão (Ref.: 201401330821)


Existem vários tipos de algoritmos para realizar a ordenação dos elementos, onde um algoritmo de ordenação
deve rearranjar o vetor de forma a estabelecer uma ordem entre os elementos. Marque a alternativa correta
que cita o algoritmo cuja descrição é: "considera cada elemento uma vez inserindo-o em seu lugar correto entre
os elementos que já estão em ordem". E o seu passo a passo pode ser descrito como: "o elemento é inserido
entre os ordenados movendo-se os elementos maiores que ele uma posição para a direita e posteriormente
inserindo-o na posição vaga".

QuickSort
Seleção
MergeSort
Bolha
Inserção

Gabarito Comentado.

Exercício: CCT0260_EX_A5_201401272398 Voltar

Aluno(a): VALERIOS RICARD SOUZA LIMA Matrícula: 201401272398

Data: 30/09/2014 20:43:02 (Finalizada)

1a Questão (Ref.: 201401327755)


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
Struct
Matriz
Fila

2a Questão (Ref.: 201401327744)


Tanto a operação TOP (acessa topo), quanto à operação POP (remover), permite acessar o último elemento
armazenado em uma Pilha. Quanto à diferença entre ambas as operações em relação ao estado da Pilha é
correto afirmar:

Ambas alteram o estado da Pilha


Somente a operação POP altera o estado da Pilha
Nenhuma das operações altera o estado da Pilha
Somente a operação TOP altera o estado da Pilha
A operação TOP remove um elemento e altera o estado da Pilha
Gabarito Comentado.

3a Questão (Ref.: 201401327249)


A estrutura de dados Pilha funciona de acordo com o seguinte fundamento básico:

O primeiro a entrar é o primeiro a sair.


Tanto o primeiro como o último podem sair primeiro.
O último a entrar é o último a sair.
O primeiro a entrar é o último a sair.
Quem estra no topo da pilha não sai mais.

Gabarito Comentado.

4a Questão (Ref.: 201401327732)


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?

Antes da operação de remoção incrementa 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 decrementa a variável indicadora de posição.
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.

Gabarito Comentado.

5a Questão (Ref.: 201401537385)

No ENEM 2012, 5790989 estudantes confirmaram inscrição.

Evidentemente, muitos faltaram às provas e o número exato não era sabido quando foi pedido ao
desenvolvedor que definisse uma função para que pudesse listar toda inscrição, e respectiva nota de
redação tabulada, que tivesse alcançado uma pontuação maior ou igual à nota procurada e, ao final, o
total de estudantes que atingiram essa meta.

Como só interessava a nota de redação, o desenvolvedor definiu a struct abaixo e começou a definir
a função queFaz(...) para que pudesse atender ao que foi pedido, usando a estrutura de dados Lista
Sequencial.

Entretanto, ele não conseguiu finalizar. Poderia você ajudá-lo?


Assinale a alternativa correta onde está presente o trecho que completa a função.
Gabarito Comentado.

6a Questão (Ref.: 201401327261)


O almoxarifado de um órgão pediu ao técnico de informática que elaborasse um sistema de custeio que, para
cada saída de material, considerasse o custo do mais recente que houvera dado entrada no almoxarifado. O
técnico deve desenvolver um programa para tratar com uma estrutura de dados do tipo?

LIFO
ARRAY
FIFO
TABLE
RECORD

Gabarito Comentado.

Exercício: CCT0260_EX_A6_201401272398 Voltar

Aluno(a): VALERIOS RICARD SOUZA LIMA Matrícula: 201401272398

Data: 07/10/2014 20:43:06 (Finalizada)

1a Questão (Ref.: 201401866966)


Observe a função que manipula uma pilha e assuma que TAM é uma constante definida com valor 5. Saiba
que o nome da função já explícita a finalidade dela.

Considere a chamada da função conforme linha abaixo, sabendo-se que vet é um vetor de tamanho 5 e que
não tem nenhum valor ainda:

Analise as afirmativas abaixo que sugerem correções, ou não, na definição na função e assinale a opção
que contem as afirmativas corretas.

I Faltou & antes da variável vetor e irá acusar erro.


II A variável topo está sem tipo.
III O teste está correto porque o índice do primeiro elemento do vetor em C++ é 1, obrigatoriamente.
IV Na linha comentada deveria estar presente um comando de atribuição que decrementaria a variável topo.
V A linha vetor[topo]=valor; está correta.
II e V estão corretas
I, II e IV estão corretas
I e III estão corretas
I , III e V estão corretas
I e II estão corretas

Gabarito Comentado.

2a Questão (Ref.: 201401867032)


Abaixo temos algumas afirmativas sobre o uso da estrutura pilha de forma estática e sequencial. Leia com
muita atenção e assinale a opção correta.

I Não existe movimentação na pilha quando inserimos ou removemos um elemento. Apenas o valor da
variável que controla o topo é alterado.
II Não podemos usar estruturas homogêneas, ou heterogêneas e uma variável para controlar o topo na
alocação sequencial.
III Um dos fatores que limita o crescimento da pilha é a quantidade de memória alocada quando usamos
matrizes.
IV Quando formos empilhar um elemento, é preciso verificar se a pilha não está cheia. Isso evita underflow.
V Quando formos desempilhar um elemento, é preciso verificar se a pilha não está vazia. Isso evita overflow.

I e III estão corretas


I, IV e V estão corretas
II, IV e V estão corretas
I, IV e V estão corretas
Somente a I está correta

Gabarito Comentado.

3a Questão (Ref.: 201401530027)


As pilhas sequenciais são estruturas que guardam a ordem reversa dos dados nelas armazenados, e isto em
muitas ocasiões é muito vantajoso. A operação usada para inserir um elemento X numa pilha é conhecida
na literatura como PUSH (X). Para remover um elemento de uma pilha a operação é o POP( ). Assim estas
duas funções devem implentar o algoritmo LIFO (Last In - First Out ) ou o último a entrar é o primeiro a
sair. Sendo assim se aplicarmos as seguintes operações em uma PILHA vazia:

PUSH(10),PUSH(5),POP(),PUSH(7),POP(),PUSH(2),POP(),POP( ).

Quais valores restarão na pilha?

10 e 2
Nenhum, a pilha estará vazia.
Apenas o 10
7e2
Apenas o 2

4a Questão (Ref.: 201401565624)


Um jogo de memória fornece sequências de números e o jogador deve dizer qual a sequência inversa para cada
nova sequência fornecida pelo jogo. Qual a estrutura de dados mais adequada para modelar esse jogo ?

árvore
pilha
fila
lista
grafo

5a Questão (Ref.: 201401535972)

Sabemos que podemos representar uma expressão de três formas, sendo que uma
delas é chamada de notação polonesa reversa ( pós-fixa).
Suponha que um professor de Estrutura de Dados desejasse compor a nota do
bimestre com uma prova e um trabalho oral, usando pesos diferenciados para as
notas. Sendo assim, usaria a média ponderada como a expressão abaixo.

A única calculadora que encontrou disponível foi uma com representação pós fixa.
Assinale a alternativa que apresenta a sequência que deveria ser digitada pelo
professor para conseguir calcular a média de um aluno.

/ * nota1 peso1 + * nota2 peso2 + peso1 peso2


nota1 peso1 * nota2 peso2 * peso1 peso2 + + /
nota1 peso1 * nota2 peso2 * + peso1 peso2 + /
/ + * nota1 peso1 * nota2 peso2 + peso1 peso2
nota1 peso1 nota2 peso2 peso1 peso2 * * + + /

Gabarito Comentado.

6a Questão (Ref.: 201401866875)


Analise as afirmativas sobre uma pilha estática e assinale a opção correta.

I Ordenar é uma operação que não se faz com pilha.


II Inserir dados é uma operação que se faz com a pilha.
III Remover dados em qualquer posição é uma operação que se faz com a pilha.
IV Verificar se a Pilha está cheia é necessário quando se deseja inserir nela.
V Inicializar uma pilha significa zerar todas as variáveis do vetor.

I e IV estão corretas.
I e II estão corretas.
I, II e V estão corretas.
I, II e IV estão corretas.
II e III estão corretas.

Gabarito Comentado.

Exercício: CCT0260_EX_A7_201401272398 Voltar

Aluno(a): VALERIOS RICARD SOUZA LIMA Matrícula: 201401272398

Data: 15/10/2014 09:31:29 (Finalizada)

1a Questão (Ref.: 201401530029)


As filas sequenciais são estruturas de dados utilizadas em diversas aplicações, tais como fila de
processo, fila de impressão, sistemas de senha etc. Entretanto, nas aplicações onde há muita
movimentação de dados, inserções e remoções de dados na fila, surgem espaços ociosos que podem
levar ao fenômeno chamado de esgotamento de memória. Para sanar este problema pode-se substituir
a fila sequencial por:

fila circular
pilha sequencial
lista circular
pilha circular
lista sequencial

Gabarito Comentado.

2a Questão (Ref.: 201401327753)


As estruturas de dados podem ser do tipo estática e dinâmica. As listas são estruturas parecidas com vetores
podendo ser do tipo dinâmica. Entretanto, existem várias implementações de estruturas do tipo listas. Dessa
forma, a estrutura que para o acesso de um dado, este precisa estar na saída, caso contrário, precisa remover
os elementos a sua frente, é chamada de:

Fila
Pilha
Matriz
Bolha
Struct

Gabarito Comentado.

3a Questão (Ref.: 201401327741)


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 incremento da variável final


Antes da inserção deve-se fazer o decremento da variável final
Após a inserção deve-se fazer o decremento da variável final
Antes da 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

Gabarito Comentado.

4a Questão (Ref.: 201401327242)


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.


FIFO, não-preemptivo.
LIFO, não-preemptivo.
Circular, não-preemptivo.
Por prioridades, preemptivo.

5a Questão (Ref.: 201401532673)

void enfileirar(Fila F, int valor) {

if (F.fim == n)

cout << "Fila cheia\n";

else {

F.fim++;

F.v[F.fim] = valor;

void enfileirar(Fila &F, int valor) {

if (F.fim == n - 1)

cout << "Fila cheia\n";


else {

F.fim++;

F.v[F.fim] = valor;

void enfileirar(Fila F, int valor) {

if (F.fim == n - 1)

cout << "Fila cheia\n";

else {

F.fim++;

F.v[F.fim] = valor;

void enfileirar(Fila &F, int valor) {

if (fim == n - 1)

cout << "Fila cheia\n";

else {

fim++;

v[fim] = valor;

void enfileirar(Fila &F, int valor) {

if (F.fim == n - 1)

cout << "Fila cheia\n";

else

F.v[F.fim] = valor;

Gabarito Comentado.

6a Questão (Ref.: 201401539872)

Um aluno do EAD estava estudando para a prova de Estrutura quando viu o trecho do
programa abaixo em uma apostila.
Como não estava com seu micro, começou a analisar a função entra(...), ficando atento a
alguns membros da struct.

Quando finalizou, virou a página da apostila e viu a resposta. Então, ficou muito feliz por
ter identificado a estrutura

Assinale a alternativa onde está presente a resposta correta.

Fila
Lista simplesmente encadeada
Fila Circular
Lista Linear
Pilha

Gabarito Comentado.

Exercício: CCT0260_EX_A8_201401272398 Voltar

Aluno(a): VALERIOS RICARD SOUZA LIMA Matrícula: 201401272398

Data: 22/10/2014 11:55:12 (Finalizada)


1a Questão (Ref.: 201401539703)
Observe o trecho de um código abaixo

struct no
{
int dado;
struct no *proximo;
};

int main()
{
no *lista=new no;
no *pt= new no;
lista->dado=1989;
lista->proximo=NULL;
...

//Nesse ponto, assuma que cinco nós foram alocados em uma lista simplesmente encadeada e valores
atribuídos aos membros dado na sequência: 1989 2014 2011 1962 2002 e, que através do comando
abaixo, o ponteiro pt passou a apontar para um nó da lista.

pt->proximo=lista->proximo->proximo;

Assinale a alternativa que apresenta o comando equivalente a:

cout << " \nValor do ?o no: " << pt->proximo->proximo->dado;

cout << " \nValor do ?o no: " << lista->dado;


cout << " \nValor do ?o no: " << lista->proximo->dado;
cout << " \nValor do ?o no: " << lista->proximo->proximo->proximo->dado;
cout << " \nValor do ?o no: " << lista->proximo->proximo->dado;
cout << " \nValor do ?o no: " << lista->proximo->proximo->proximo-> proximo-
>dado;

Gabarito Comentado.

2a Questão (Ref.: 201401866322)


Vários conceitos foram estudados quando se falou sobre ponteiros e alocação dinâmica. Entre eles, o de
Fragmentação Externa. Assinale a opção que explica o que significa.

Espaço de Memória não utilizado dentro do segmento.


Espaço livre no HD.
Espaço de Memória perdido entre os segmentos.
Significa alocação não contígua.
Código do programa gravado em partes separadas na memória.

Gabarito Comentado.

3a Questão (Ref.: 201401566764)


Dr. Pei Tam possui uma lista não ordenada de pacientes de seu consultório em que registra apenas
o nome endereço e o telefone de cada paciente. Como não há limites para o crescimento de sua
lista, como se pode implementar a inserção de um novo paciente na lista, sabendo que cada
paciente é do tipo Paciente e a lista é do tipo List assim definidos :

struct Paciente {

long int matricula;

string nome, endereco e tel;

};

struct List {

Paciente p;

struct List *link;

};

List * inserePac(List *i) {

List *novo = new List;

Paciente pat;

novo->p = pat;

novo->link = i;

return novo;

List * inserePac(List *i, Paciente pt){

List *novo ;

novo->p = pt;

novo->link = i;

return novo;
}
List * inserePac(List *i, Paciente pac)

List *novo = new List;

novo.p = pac;

novo.link = i;

return novo;
}

List * inserePac(List *i, Paciente pt)

List *novo = new List;

novo->p = pt;

novo->link =i;

return novo;

List insereCliente(List *i, Paciente pac)

List novo[];

novo[0].p = pac;

novo[0].link = i;

return novo;

Gabarito Comentado.

4a Questão (Ref.: 201401565628)


Sou uma empresária que quer crescer e por isso, tenho que aumentar progressivamente a minha lista de
clientes, sem limitar este crescimento. Assim, à medida que novos clientes são cadastrados, posso, se
necessário, contratar mais e mais empregados. 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 encadeada e alocação dinâmica de memória


fila encadeada e alocação dinâmica de memória
pilha dinâmica e alocação dinâmica de memória
lista sequencial e alocação dinâmica de memória
fila dinâmica e alocação dinâmica de memória

Gabarito Comentado.

5a Questão (Ref.: 201401567621)

Vetores são elementos considerados longos quando usados como parâmetros


de funções, mesmo assim pode-se passar um vetor como um argumento de
uma função. Seja o exemplo a seguir codificado em C++:
int main()
{
int vetor[]={1,2,3,4,5};
saída(vetor,5);
return 0;
}

Neste exemplo a função saída( ) está sendo chamada e recebe como


parâmetros o vetor e o inteiro 5. Marque a alternativa que ilustra uma
possibilidade correta de protótipo para esta função.

void saída(int *vetor, int dim);


void saída(int vetor, int dim);
void saída(int **vetor, int dim);
void saída(vetor [ ], int dim);
void saída(int [ ] vetor, int dim);

Gabarito Comentado.

6a Questão (Ref.: 201401532683)


xercício: CCT0260_EX_A9_2014012723
98 Voltar
Aluno(a): VALERIOS RICARD SOUZA
Matrícula: 201401272398
LIMA

Data: 29/10/2014 21:35:03 (Finalizada)

1a Questão (Ref.: 201401327245)


Qual das seguintes estruturas de dados é classificada como heterogênea?

Vetor
Registro
Pilha
Fila
Loop

Gabarito Comentado.

2a Questão (Ref.: 201401327637)


Qual o valor de a após a execução do trecho abaixo?

int a = 10;

int *x;

x = &a;
*x = 55;

10
65
55
0
existe um erro no trecho de código

Gabarito Comentado.

3a Questão (Ref.: 201401327754)


Para simular uma lista encadeada simplesmente pode se utilizar as estruturas de ponteiros. Como pode ser
definida uma estrutura do tipo ponteiro?

Uma estrutura que aponta para um objeto de arquivo.


Um objeto que armazena dado diretamente na memória.
Um objeto que contém um endereço de memória.
Um objeto que não contém endereço de memória.
Uma estrutura utilizada apontar erros de operações.

Gabarito Comentado.

4a Questão (Ref.: 201401532702)


Assinale a opção correta. Sobre pilha dinâmica podemos afirmar que :

insere-se em qualquer posição, antes ou após qualquer nó, visto que é dinâmica.

só pode ter seus dados impressos no sentido do último nó para o primeiro nó.

é 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.


usa o critério FIFO, visto que é dinâmica.

Gabarito Comentado.

5a Questão (Ref.: 201401327767)


As estruturas de dados são importantes para a programação porque facilitam a pesquisa, pois permitem a
ordenação dos dados de forma crescente ou decrescente. Dessa forma, assinale a alternativa correta que define
um tipo de dado estruturado.

Permitem agregar mais do que um valor em uma variável, existindo uma relação estrutural entre seus
elementos.
Consiste da definição do conjunto de valores (denominado domínio) que uma variável pode assumir ao
longo da execução de um programa.
Também são denominados tipos primitivos, não é possível decompor em partes menores.
São tipos de dados indivisíveis.
Podem armazenar apenas um valor de cada vez, se algum valor for atribuído o anterior é apagado.

Gabarito Comentado.

6a Questão (Ref.: 201401327752)


A armazenagem de dados pode ocorrer temporariamente em uma variável, um vetor ou em uma estrutura
chamada Struct na linguagem C e C++. Como se procede a atribuição de valor a um determinado campo de
uma estrutura do tipo Struct?

Nome da estrutura seta tipo do campo


Nome da estrutura ponto nome do campo
Nome da estrutura ponto tipo do campo
Nome da estrutura vírgula tipo do campo
Nome da estrutura seta nome do campo

Gabarito Comentado.

Exercício: CCT0260_EX_A10_201401272398 Voltar

Aluno(a): VALERIOS RICARD SOUZA LIMA Matrícula: 201401272398

Data: 04/11/2014 21:24:29 (Finalizada)

1a Questão (Ref.: 201401330823)


Em algumas situações, principalmente na utilização de listas, há a necessidade de posicionar o ponteiro em
determinado local da lista. Dessa forma, analisando o trecho de código abaixo, que mostra uma função, assinale
a alternativa correta que descreve o objetivo desta. Sabe-se que o sinal de asterisco (*) sinaliza um ponteiro.

void funcao (Nodo **P){


if ( *P != NULL ){
while ( (*P) -> Anterior != NULL )
*P= (*P) -> Anterior;
}
}

Posicionar o ponteiro onde houver o valor NULL


Posicionar o ponteiro no meio da lista
Posicionar o ponteiro no final da lista
Colocar o valor NULL em todos os ponteiros
Posicionar o ponteiro no início da lista

Gabarito Comentado.

2a Questão (Ref.: 201401327567)


Marque a afirmativa que represente uma Lista Circular Simplesmente Encadeada:
Cada ponteiro possui um só endereço que referencia o "primeiro" nó da lista.
O ponteiro do "último" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da lista.
Além do campo relativo ao dado, cada nó possui dois ponteiros,
O ponteiro do "primeiro" nó não é NULL, mas sim aponta de volta para o "último" nó da lista, formando
um ciclo.
Cada nó possui um só ponteiro que referencia o próximo nó da lista.

Gabarito Comentado.

3a Questão (Ref.: 201401327256)


Em relação as estruturas de dados, aquela que corresponde ao armazenamento em uma lista linear com a
posição relativa (não contígua) na memória de dois nós consecutivos da lista é conhecida por alocação:

Encadeada.
Binária.
Estática.
Combinada.
Seqüencial.

Gabarito Comentado.

4a Questão (Ref.: 201401327756)


As listas encadeadas podem ser elaboradas de duas formas utilizando uma técnica de encadeamento
simplesmente ou encadeamento duplo. O que difere uma lista simplesmente encadeada de uma lista
duplamente encadeada?

Em uma lista simplesmente encadeada cada nó aponta para nó seguinte e para o nó anterior.
Em uma lista duplamente encadeada cada nó aponta para nó seguinte.
Em uma lista duplamente encadeada, cada nó aponta para um nó enquanto a lista simplesmente
encadeada aponta para mais de um nó.
Em uma lista simplesmente encadeada cada nó aponta para um único nó enquanto a lista duplamente
encadeada aponta para mais de um nó.
Em uma lista duplamente encadeada cada nó aponta para nó seguinte e para o primeiro nó da fila.

5a Questão (Ref.: 201401330815)


Um tipo de estrutura de dados é declarada em C como:
typedef struct no *apontador;
struct no{
int valor;
apontador esq, dir;
}
onde esq e dir representam ligações para os dados da esquerda e direita, respectivamente. Qual das seguintes
alternativas é uma implementação correta da operação que inverte as posições dos dados da esquerda e da
direita uma estrutura p, onde t é um apontador auxiliar.

p->dir=t;
p->esq = p->dir;
p->dir = t;
t=p;
p->esq = p->dir;
p->dir = p->esq;
t=p->dir;
p->esq = p->dir;
p->dir = t;
p->esq = p->dir;
t = p->esq;
p->dir = t;
t=p->dir;
p->dir = p->esq;
p->esq = t;

6a Questão (Ref.: 201401327568)


Marque a afirmativa que represente uma concatenação em listas.

Intercalar a ordem dos dados da lista do final para o início, atualizando a lista.
Alterar a ordem dos dados da lista do final para o início, atualizando a lista.
Organizar os dados da lista em ordem crescente ou decrescente.
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.

Gabarito Comentado.