Buscar

Estruturas de dados - Exercicio 06

Prévia do material em texto

18/06/2015 BDQ Prova
data:text/html;charset=utf­8,%3Cform%20name%3D%22form%22%20method%3D%22post%22%20action%3D%22http%3A%2F%2Fsimulado.estacio.br… 1/4
   ESTRUTURA DE DADOS   Lupa  
 Fechar
Exercício: CCT0260_EX_A6_   Matrícula: 
Aluno(a):  Data: 18/06/2015 20:22:54 (Finalizada)
  1a Questão (Ref.: 201407926888)  Fórum de Dúvidas (0)       Saiba   (0)
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.
  I, II e IV estão corretas
I e II estão corretas
I , III e V estão corretas
I e III estão corretas
  II e V estão corretas
 Gabarito Comentado
  2a Questão (Ref.: 201407627531)  Fórum de Dúvidas (0)       Saiba   (0)
As estruturas de dados devem ser especificadas de modo que estas auxiliem
as aplicações em sua principal tarefa ou funcionalidade. Sendo assim, pode­
18/06/2015 BDQ Prova
data:text/html;charset=utf­8,%3Cform%20name%3D%22form%22%20method%3D%22post%22%20action%3D%22http%3A%2F%2Fsimulado.estacio.br… 2/4
se  desenvolver  uma aplicação  capaz  de  fazer  a  conversão  de  números  da
base 10, para a base binária, octal ou hexadecimal a partir de um algoritmo
de  divisões  sucessivas.  Este  algoritmo  baseia  na  divisão  de  um  número
decimal pela base que se deseja a  transformação, armazenando o resto da
divisão  em  uma  estrutura  de  dados,  efetuando  nova  divisão  no  resultado
obtido da divisão prévia, novamente armazenando o resto desta operação na
estrutura  de  dados  e  assim  por  diante  até  que  o  resultado  da  divisão  seja
zero. Neste momento, a estrutura possui exatamente, na ordem reversa, os
algarismos  correspondentes  ao  número  convertido  para  a  nova  base.
Analisando esta estratégia poder­se­ia dizer que a estrutura de dados mais
propícia para tal tarefa é :
Grafo
  Pilha
Fila
Lista
  Árvore
 Gabarito Comentado
  3a Questão (Ref.: 201407609270)  Fórum de Dúvidas (0)       Saiba   (0)
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.
  Lista Sequencial
Grafos
  Pilha Sequencial
Árvores
Fila Sequencial
 Gabarito Comentado
  4a Questão (Ref.: 201407926954)  Fórum de Dúvidas (0)       Saiba   (0)
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.
18/06/2015 BDQ Prova
data:text/html;charset=utf­8,%3Cform%20name%3D%22form%22%20method%3D%22post%22%20action%3D%22http%3A%2F%2Fsimulado.estacio.br… 3/4
  I, IV e V estão corretas
  I e III estão corretas
II, IV e V estão corretas
Somente a I está correta
I, IV e V estão corretas
 Gabarito Comentado
  5a Questão (Ref.: 201407627534)  Fórum de Dúvidas (0)       Saiba   (0)
Pilhas são estruturas de dados que se utilizam do algoritmo LIFO, last in first
out,  ou melhor,  o  último  a  entrar  é  o  primeiro  a  sair.  Desta  forma  pode­se
abstrair que existe apenas um  local para a saída e a entrada de dados, ou
seja o topo da pilha.
Supondo  que  uma  pilha  seja  implementada  por  um  vetor  de  inteiros  de
tamanho  10  e  que  exista  uma  variável  global  chamada  topo  para  indexar
esta  posição  de  entrada  e  saída  de  dados  e  ainda  quando  esta  variável
assume o valor ­1 indica que a pilha está vazia. Marque a opção que melhor
ilustra a função de exclusão de um dado do vetor pilha, supondo ainda que o
vetor tenha sido declarado inicialmente de forma global.
  void pop(){ if(topo != ­1) topo­­;}
void pop(){ if(pilha != ­1) pilha[topo­1];}
void pop(){ if(topo != ­1) pilha[topo­1];}
void pop(){ if(pilha != ­1) pilha[topo];}
void pop(){ if(topo != ­1) topo++;}
 Gabarito Comentado
  6a Questão (Ref.: 201407592453)  Fórum de Dúvidas (0)       Saiba   (0)
   Considere uma pilha sequencial P com capacidade para n elementos.
   Sabendo que P é do tipo Pilha definido a seguir, marque a opção que corretamente
implementa a operação de empilhamento, considerando que o topo da pilha recebeu ­1 na
inicialização.
 
struct Pilha {
                   int v[n], topo;
                 };
 
  void empilhar(Pilha P, int valor) {
       if (P.topo == n ­ 1)
          cout << "Pilha cheia.";
      else      {
          P.topo++;
18/06/2015 BDQ Prova
data:text/html;charset=utf­8,%3Cform%20name%3D%22form%22%20method%3D%22post%22%20action%3D%22http%3A%2F%2Fsimulado.estacio.br… 4/4
          P.v[P.topo] = valor;
       }
}
void empilhar(Pilha P, int valor) {
       if (P.topo == n)
          cout << "Pilha cheia.";
      else      {
          P.topo++;
          P.v[P.topo] = valor;
       }
}
  void empilhar(Pilha &P, int valor) {
       if (P.topo == n ­ 1)
          cout << "Pilha cheia.";
      else      {
          P.topo++;
          P.v[P.topo] = valor;
       }
}
void empilhar(Pilha &P, int valor) {
       if (P.topo == n ­ 1)
          cout << "Pilha cheia.";
      else
             P.v[P.topo] = valor;
}
 
void empilhar(Pilha &P, int valor) {
       if (topo == n ­ 1)
          cout  <<  "Pilha cheia.";
      else       {
           topo++;
           v[topo] = valor;
       }
}
 Gabarito Comentado
 Fechar

Continue navegando

Outros materiais