Baixe o app para aproveitar ainda mais
Prévia do material em texto
Podemos dizer que estrutura de dados é: O que permite o armazenamento e a recuperação de dados independentemente de seu conteúdo. É a saída, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma solução do problema. O meio para armazenar e organizar dados com o objetivo de facilitar o acesso e as modificações. 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. Preciso fazer uma relação de tudo o que levar em minha viagem de mochila pela Europa. A estrutura de dados mais adequada para armazenar tudo que preciso levar é ... grafo árvore lista fila pilha A forma correta para imprimir o valor do último elemento de um vetor v com n posições é: cout << v[n-1]; cin >> v[-1]; cout << v[n+1]; cout << v[n]; cout << v[ultimo]; 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 ? Lista Fila Grafo Árvore Pilha É um exemplo de TAD Não Linear: Grafos Listas Pilhas Filas Filas de Prioridade Respondido em 18/03/2021 06:29:14 Explicação: Um grafo é um tipo de dados abstrato não linear 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. Pilha Sequencial Fila Sequencial Lista Encadeada Lista Sequencial Pilha Encadeada Qual estrutura de dados é mais adequada para armazenar a estrutura do diretório do sistema de arquivos de um sistema operacional? Lista Árvore Grafo Pilha Fila Respondido em 18/03/2021 06:31:42 Explicação: A estrutura de diretórios mostra hierarquia e um relacionamento não linear. Por isso, a resposta certa é árvore. Lista, pilha e fila são estruturas de dados linear. Grafo é não linear, mas não é hierárquica. 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. árvore fila lista grafo pilha A forma correta para imprimir o valor do último elemento de um vetor v com n posições é: cout << v[n+1]; cin >> v[-1]; cout << v[n-1]; cout << v[ultimo]; cout << v[n]; É um exemplo de TAD Não Linear: Filas de Prioridade Grafos Filas Pilhas Listas Respondido em 03/05/2021 06:05:05 Explicação: Um grafo é um tipo de dados abstrato não linear Estão entre algumas das possíveis formas de estruturas de dados: Listas, vetores, cin Árvores binárias, pilhas, vetores cout, Funções, vetores Grafos, funções, fila Árvores binárias, pilhas, algoritmos Respondido em 03/05/2021 06:05:07 Explicação: Árvores binárias, pilhas, vetores Verdadeiro. Grafos, funções, fila Falso. Funções não são estruturas de dados. Funções são módulos dos programas. Árvores binárias, pilhas, algoritmos FAlso. Algoritmos não são estrutura de dados. Listas, vetores, cin Falso. cin não é estrutura de dados. É usado para fazer entrada de dados. cout, Funções, vetores Falso. Funções e cout não são estrutura de dados. 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 ? Árvore Pilha Grafo Lista Fila 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. 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 II, IV, V e VI são afirmativas verdadeiras I, II e V são afirmativas verdadeiras 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 II estão corretas As alternativas I e III estão corretas. As alternativas III e IV estão corretas. Observe o trecho do programa em C++ abaixo e, após, entrar com os valores sugeridos para sua execução assinale a alternativa que representa a resposta final. cin >> a; cin >> b; cin >> c; cin >> d; cout << a; cout << b; cout << c; cout << d; cout << d; cout << c; cout << b; cout << a; Após a impressão dos valores pela ordem teremos uma pilha e uma fila. Após a impressão dos valores pela ordem teremos uma fila e um grafo. Após a impressão dos valores pela ordem teremos uma fila e uma pilha. Após a impressão dos valores pela ordem teremos duas pilhas. Após a impressão dos valores pela ordem teremos duas filas. 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 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. 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. Preciso fazer uma relação de tudo o que levar em minha viagem de mochila pela Europa. A estrutura de dados mais adequada para armazenar tudo que preciso levar é ... lista fila pilha grafo árvore Preciso cadastrar todos os interessados em meu novo curso de programação. Qual a estrutura de dados mais adequada para modelar este problema, visto que não há qualquer preocupação com ordem de chegada ou saída de aluno da turma. Pilha Grafo Fila Lista Árvore Questão Diferentes tipos de estrutura de dados são adequadas a diferentes tipos de aplicação e algumas são altamente especializadas, destinando-se a algumas tarefas específicas.Dessa forma a definição de Estrutura de Dados está expressa na alternativa: É um modo de utilização de dados nos programas de computador. É um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados de modo eficiente. É um modo de distribuição e organização de dados em uma rede de computador de modo que possam ser usados de modo eficiente. São os nomes dados as variáveis na montagem de uma rotina. É um modo de deleção de dados em um computador. 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. pilha fila grafo árvore lista 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 III e IV estão corretas. As alternativas II e IV estão corretas. Todas as alternativas estão corretas. Estão entre algumas das possíveis formas de se estruturar dados: Algoritmos, lista ordenada, vetores. Lista encadeada, vetores, algoritmos. Grafos, lista ordenada, algoritmos. Grafos, lista ordenada, vetores. Grafos, algoritmos, fila. O que é estrutura de dados? É um conjunto de comandos para uma tarefa específica referenciada por um nome no algoritmo principal, retornando um determinado valor no seu próprio nome. É um conjunto de técnicas de programação. É uma forma determinada de armazenamento de dados em um banco de dados. É uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais devendo ser executadas mecânica ou eletronicamente em um intervalo de tempo finito e com uma quantidade de esforço finita. É um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados eficientemente. Respondido em 03/05/2021 06:06:22 Explicação: Estrutura de dados não é banco de dados . Estrutura de dados não é Tipo de dados. Estrutura de dados não é ¿ É um conjunto de comandos para uma tarefa específica referenciada por um nome no algoritmo principal, retornando um determinado valor no seu próprio nome¿ que no caso, fala de função. Estrutura de dados não é ¿ É uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais devendo ser executadas mecânica ou eletronicamente em um intervalo de tempo finito e com uma quantidade de esforço finita.¿ Esta definição é de algoritmo. Portanto, Estrutura de Dados é ¿ É um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados eficientemente.¿ Assinale a alternativa correta sobre tipos abstratos de dados: Um tipo abstrato de dados é composto por um modelo de dados e um conjunto de operadores definidos sobre esses dados. Um tipo abstrato de dados é um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados eficientemente. É fundamental que os tipos abstratos de dados proponham um conjunto eficiente de algoritmos para realização de suas operações. Um tipo abstrato de dados deve sempre ser representado por meio dos recursos específicos de uma linguagem de programação. Um tipo abstrato de dados descreve, além do que se pode fazer com os dados, como as operações serão efetivamente implementadas. Considere o trecho de um programa escrito em C++ : long func1 (int n1) { int ft=1, i = 1; while ( i <= n1) { ft *= i; i++; } return ft; } main() { cout << func1 (5); } Marque a opção correta que mostra o que é impresso na tela. 60 1 5 24 120 Respondido em 18/03/2021 06:35:09 Explicação: Acompanhando passo a passo : long func1 (int n1) { int ft=1, i = 1; while ( i <= n1) { ft *= i; i++; } return ft; } main() { cout << func1 (5); } Passo a passo : 1) Começando a execução pela main ... func1 é chamada e é passado o valor 5. 2) Entrando na função, temos que n1 recebeu 5, i recebeu 1 e ft recebeu 1. 3) Ainda na função func1 ... teste do loop ... 1 <= 5 ? Sim. Então, ft recebe 1*1, que dá 1 e i passa a valer 2. Acompanhar na tabela desde o início da execução de func1 ft i i <= n1 1 1 1 <= 5 / Sim 1 2 2 <= 5 ? Sim 2 3 3 <= 5 ? sim 6 4 4 <= 5 ? Sim 24 5 5 <= 5 ? Sim 120 6 6 <= 5 ? FAlso SErá retornado o valor de ft que é 120. Volta-se então para a main e o valor 120 é impresso. Assinale a opção CORRETA. O protótipo da função que permitirá calcular o volume de um paralelepípedo com medidas a, b e c de acordo com o trecho da chamada : cout << "Volume = " << volume(a,b,c); float volume (float, float, float); float volume (float, float); float volume (float ; float ; float); void volume (float , float); void volume (float, float, float &); Respondido em 18/03/2021 06:39:01 Explicação: Resposta única. Pela chamada da função cout << "Volume = " << volume(a,b,c); temos que a função retorna um valor, que pelo enunciado, vemos que é do tipo float. Há ainda os valores de a, b e c que são medidas de uma figura geométrica. Logo, a, b e c são do tipo float. Como protótipo é uma declaração temos : tipo de retorno da função seguido do seu nome seguido de parênteses e dentro dos parênteses, temos os tipos das variáveis que estavam na chamada da função. Logo : float volume(float, float, float); Note a vírgula para separar os tipos e o ponto e vírgula ao final. Informe qual deverá ser a saída do programa abaixo: #include void func(int *x) { do{ cout << *x << " "; (*x)--; }while(*x>0); } main() { int x=5; func(&x); cout << x; system("pause"); } 5 3 4 2 1 4 5 4 3 2 1 5 5 4 3 2 1 6 5 3 4 2 1 0 5 4 3 2 1 0 Caso uma estrutura homogênea (vetor) seja passada como parâmetro para uma função, então: Todos os valores contidos no vetor são copiados para a função Essa passagem pode ser "por valor" ou "por referência" Essa passagem é "por valor" Essa passagem é "por referência" Haverá um erro de compilação, pois vetores não podem ser parâmetros de funções Respondido em 18/03/2021 06:43:36 Explicação: Quando o vetor é um parâmetro de uma função ele é sempre passado por referência, não havendo outra possibilidade. Não ocorrerá erro, se o vetor for devidamente passado para a função. 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; } 5 20 10 Haverá um erro de compilação 0 Considere o trecho de um programa escrito em C++. void func1 (bool x, int ini, int fim) { for ( int y=ini; y != fim ; y++) { x = !x; if (x) cout << y << endl; else cout << -y << endl; } } int main() { func1(false, 1, 7); } Marque a opção correta que mostra o que é impresso na tela. 1, -2, -3, -4, -5, -6 1, -2, 3, -4, 5, -6 1, 2, 3, 4, 5, 6 -1, -2, -3, -4, -5, -6 -1, 2, -3, 4, -5, 6 Respondido em 18/03/202106:46:35 Explicação: Fazendo um teste de mesa temos que será impresso a seguinte sequência : 1 -2 3 -4 5 -6, um embaixo do outro. Parte de um teste de mesa : x ini fim y false 1 7 1 true 2 false E continua x, ini, fim e y recebendo valores Tela : 1 -2 3 -4 5 -6 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: Passagem por valor. Envio de valor. Registro. Envio de inteiro. Ponteiros. Sobre funções, é correto afirmar: Não devem conter variáveis locais em seu código. São blocos de instruções que são executados quando são chamadas em alguma parte do programa. Obrigatoriamente devem retornam algum valor. Obrigatoriamente devem possuir parâmetros. Não podem ser chamadas dentro de outras funções. Respondido em 18/03/2021 06:48:21 Explicação: Uma função é um bloco de instruções que pode ser chamada a partir de outra função, que pode ter ou não parâmetros, que pode ou não retornar valor, que pode ter ou não variáveis locais. 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'; } Ocorre erro, pois a função, que é do tipo void, não retorna o vetor Y. algo ogla algor rogla Respondido em 03/05/2021 06:06:44 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 Caso uma estrutura homogênea (vetor) seja passada como parâmetro para uma função, então: Haverá um erro de compilação, pois vetores não podem ser parâmetros de funções Essa passagem pode ser "por valor" ou "por referência" Essa passagem é "por referência" Essa passagem é "por valor" Todos os valores contidos no vetor são copiados para a função Respondido em 03/05/2021 06:06:50 Explicação: Quando o vetor é um parâmetro de uma função ele é sempre passado por referência, não havendo outra possibilidade. Não ocorrerá erro, se o vetor for devidamente passado para a função. Uma função possui um valor de retorno inteiro, recebe por valor um inteiro como primeiro parâmetro e por referência um inteiro como segundo parâmetro. Qual das respostas abaixo poderia representar o protótipo dessa função: void func (int &a, int &b); int func (int a, int &b); void func (int a, int &b); int func (&int, int); int func (int &a, int b); Assinale a opção certa. Quando não se escreve o protótipo de uma função ... A definição da função deverá ser escrita, obrigatoriamente, após o programa principal. A chamada da função não poderá ser feita em qualquer hipótese. É preciso definir a função antes do programa principal. A chamada da função poderá ser feita em qualquer hipótese. O programa não funcionará de forma alguma. 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 registro ( ) área de dados globais / área de pilha ( ) área de pilha / área de registro ( ) área de registro / área de dados globais ( ) área de registro / área de pilha Considere o trecho de um programa escrito em C++ : long func1 (int n1) { int ft=1, i = 1; while ( i <= n1) { ft *= i; i++; } return ft; } main() { cout << func1 (5); } Marque a opção correta que mostra o que é impresso na tela. 60 5 120 24 1 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 o protótipo da função media( ) não apresenta a identificação dos parâmetros, mas apenas os tipos dos mesmos. O programa executa perfeitamente independente da ordem das funções já que existem os seus protótipos. O programa não executa corretamente pois as funções devem ser descritas antes da função main(), para que o compilador consiga reconhecê-las. 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 Filas Os Vetores As funções As Estruturas de Dados Os Grafos O que será mostrado na tela pelo programa abaixo ? #include < iostream > using namespace std; int a,b; void dobro(int x){ //x passado por valor x=2*x; } int triplo(int y){ //y passado por valor return 3*y; } void altera(int x, int &y) { //x passado por valor e y passado por referencia x=x+a; y=x+b; } int main (){ a=2; b=3; dobro(a); b=triplo(b); altera(a,b); cout<< a << " e " << b << endl; } 4 e 9 2 e 13 9 e 16 4 e 12 2 e 9 Nas linguagens C e C++, ao se declarar qualquer função, a especificação de tipo de dados que antecede o nome desta função define o protótipo da função. o tipo do dado do valor retornado da função para quem a chamou. o tipo das variáveis que serão utilizadas dentro da função. o tipo dos dados dos parâmetros que são passados à função quando da sua chamada. o escopo das variáveis do programa. Respondido em 03/05/2021 06:07:46 Explicação: Por definição, antes do nome da função colocamos o tipo de dados retornado. Por exemplo, int, double, char ... Quando a função nada retorna colocamos void. Considera a FUNÇÃO abaixo: void inverte(int &x, int &y) { int aux = x; x = y; y = aux; } Quais valores serão impressos na tela quando o seguinte programa principal for executado? int main() { int a = 18, b = 28; inverte(a, b); cout << a <<" e "<< b; return 0; } 28 e 08 08 e 18 18 e 28 28 e 18 18 e 18 Respondido em 03/05/2021 06:07:51 Explicação: Teste de Mesa a b x y aux 18 28 //Na main() 18 28 18 28 //Quando a função é chamada x, recebe o endereço de a e y, o de b. Logo acessam os mesmos endereços 18 28 18 28 18 //Na função, aux é declarada e inicializada com o valor de x 18 28 28 28 18 //Na função x = y; Deixará x com valor 28 18 28 28 18 18 //Na função y = aux; Deixará y com valor 18 Como a função é void, nada retorna e nem precisa porque os valores foram trocados pela função misterio(...) que recebeu por passagem por referência. Considere o trecho de um programa escrito em C++.int func1 (int vtx[], int tam) { int soma=0; for (int i=0 ; i < tam; i++) { if (i % 2 !=0) soma += vtx[i]; } return soma; } int main() { int vt[5] = {10,20,30,40,50}; cout << func1 (vt,5); } Marque a opção correta que mostra o que é impresso na tela. 60 40 30 50 20 Respondido em 03/05/2021 06:07:55 Explicação: int func1 (int vtx[], int tam) { int soma=0; //inicializa soma com zero. for (int i=0 ; i < tam; i++) { if (i % 2 !=0) //testa se i é ímpar. Se for, acumula na soma o valor de vtx[i] soma += vtx[i]; } return soma; } Fazendo um teste de mesa parcial ... vetor tam soma i {10, 20, 30, 40, 50} 5 0 0 20 1 2 E continua ... se vê que a função está somando os elementos do vetor que possuem índices ímpares. Logo, serão somados 20 e 40, que dará 60. A soma 60 é retornada e impressa na main. 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; 25 e 15 15 e 15 25 e 25 15 e 25 0 e 5 Respondido em 03/05/2021 06:07:59 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 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 20 0 5 10 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 = 100 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 referência Será impresso Auxiliar = 15 Result = 1000 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 valor Será impresso Auxiliar = 15 Result = 999 Valor = 85 sendo que z é um parâmetro passado por referência 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 = 3; n = n + 2; dobro(n); cout << n; return 0; } 0 10 3 5 20 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. 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; } } } } 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; } } int ordena(float v[], float valor, int n){ for (int i = 0; i < n; i++) if (v[i] == valor) return i; return -1; } 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; } Respondido em 18/03/2021 06:51:29 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! 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].nota=5.7; aluno.vet[10]=5.7; vet[10]=aluno.5.7; Qual das seguintes estruturas de dados é classificada como heterogênea? Pilha Registro Fila Loop Vetor Respondido em 18/03/2021 06:53:44 Explicação: Registro permite agregar dados de tipos diferentes. Vetor permite agregar dados do mesmo tipo. Pilha e fila implementadas com vetor ou lista encadeada. Loop : termo genérico para repetições. Marque a opção correta, considerando struct Livro { int codigo; float preco; } liv; liv->preco = 30.70; Livro.codigo = 12345; liv.preco = 30.70; Livro.liv.codigo = 12345; Livro->liv.codigo = 12345; 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; aluno[10]=6.0; vet[3].aluno=6.0; vet[3].media=6.0; aluno[3].10=6.0; Marque a afirmativa correta para a "Inserção em lista linear sequencial ordenada". Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos. 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 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. Respondido em 18/03/2021 06:58:07 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. Pode-se definir uma estrutura heterogêneacomo 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. aluno.vet[10].nota=5.7; vet[10].aluno.nota=5.7 ; vet[10]=aluno.5.7; vet[10].nota=5.7; aluno.vet[10]=5.7; Em C++, quando uma variável é declarada como uma struct, o acesso para atribuição e leitura dos membros (campos) deste registro se dá pelo operador : -> (seta). , (vírgula). * (asterisco). & (e comercial ou eitza). ∙ (ponto). Respondido em 18/03/2021 06:58:59 Explicação: Por definição, o operador que permite acessar os campos de uma variável struct é o ponto (.). 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 de cadeias pesquisa sequencial pesquisa indexada pesquisa binária Seja a seguinte função de ordenação: 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; } } Pode-se dizer que é uma função de ordenação: Que utiliza o método inserção e realiza uma ordenação crescente nos elementos do vetor v. Que utiliza o método inserção e realiza uma ordenação decrescente nos elementos do vetor v. Que utiliza o método bolha e realiza uma ordenação crescente nos elementos do vetor v. Que utiliza o método seleção e realiza uma ordenação decrescente nos elementos do vetor v. Que utiliza o método seleção e realiza uma ordenação crescente nos elementos do vetor v. 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]= 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; } Respondido em 18/03/2021 07:06:09 Em relação à classificação do método de ordenação, assinale abaixo aquele que, durante o processo de ordenação, só usa a memória principal: Ordenação Eficiente Ordenação Simples Externa Ordenação Simples Ordenação Externa Ordenação Interna Sobre o funcionamento da busca binária, é correto afirmar que dividindo seu vetor em duas metades. Se o item for maior que o item que está na metade do vetor procure na primeira metade, ou seja, a da direita. 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 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 não foi encontrado. Respondido em 18/03/2021 07:08:41 Explicação: Neste tipo de busca, o vetor deve estar ordenado. Divide-se o conjunto de dados ao meio e procura-se no meio do vetor. Se achou, retorna a posição do dado do meio. SE não achou, verifica-se se o valor procurado vem antes do valor do meio. Se for verdade, redefine-se o fim do vetor, voltando a realizar a busca à esquerda do meio. Se o valor procurado vier depois do valor do meio do vetor, então redefine-se o início e segue-se para a busca na parte à direita do meio do vetor. Existem vários algoritmos de busca em estruturas de dados, um destes realiza a busca em vetores, e requer acesso aleatório aos elementos desta estrutura e parte do pressuposto de que os dados do vetor estejam ordenados e utiliza a técnica de divisão e conquista comparando o elemento desejado com o elemento do meio do vetor. Esta técnica ainda verifica se o elemento do meio do vetor for o desejado, a busca termina. Caso contrário, se o elemento do meio vier antes do elemento buscado, então a busca continua na metade posterior do vetor. E se o elemento do meio vier depois da chave, a busca continua na metade anterior do vetor. O algoritmo que utiliza esta metodologia é: Inserção Seleção Pesquisa sequencial Bolha Pesquisa binária 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 Bublesort Heapsort Quicksort Mergesort Shellsort "Algoritmo de ordenação por trocas que varre um vetor um certo número de vezes, comparando os elementos vizinhos dois a dois. A cada varredura, se o par de elementos está em ordem crescente, nada é feito, caso contrário os elementos do par são permutados". Esta definição está descrevendo o algoritmo de ordenação conhecido por : QuickSort MergeSort BubbleSort SelectionSort InsertionSort Respondido em 18/03/2021 07:12:52 Explicação: Das opções apresentadas, as únicas que são ordenações por troca são Bubblesort e Quicksort. Dessas duas ordenações, a única que trabalha com duplas de elementos vizinhos é o Bubblesort. O Quicksort, que está fora do escopo da disciplina, trabalha com pivô. 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. linear. por contagem. binária. por comparação. Sabendo-se que o método de ordenção bolha ou bubble sort realiza a troca de elementos adjacentes até que todos os elementos de um vetoresteja ordenado. Então, se submetermos a sequencia de inteiros armazenada em um vetor inicialmente na seguinte ordem : 4, 2, 5, 1. Pode-se dizer que quando o maior elemento do vetor alcançar sua posição final, a ordenação apresentada no vetor é: 2,4,1,5 1,4,2,5 1,2,4,5 4,1,2,5 2,1,4,5 Marque a afirmativa correta para a "Busca ou pesquisa binária". Consiste em fazer uma busca em um vetor já ordenado, dividindo o espaço de busca ao meio e verificando se o dado está no meio ou, antes do meio ou depois do meio. Consiste em adicionar um valor no vetor, alterando a ordem existente e ajustando o total de elementos. É o processo pelo qual um conjunto de dados é colocado em uma ordem crescente ou decrescente. Consiste em fazer uma busca em um vetor desordenado, dividindo o espaço de busca ao meio e verificando se o dado está no meio ou, antes do meio ou depois do meio. Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos. Considere as afirmativas a seguir. I. Uma forma muito simples de fazer uma busca em um vetor consiste em percorrer o vetor, elemento a elemento, para verificar se o elemento procurado é igual a um dos elementos do vetor. II. A pesquisa sequencial é extremamente simples e eficiente quando o número de elementos do vetor for muito grande. III. Na pesquisa binária, a cada interação do algoritmo o tamanho do vetor é dividido ao meio. IV. A pesquisa binária funciona corretamente quanto o conjunto de dados estiver desordenado. Assinale a alternativa correta. Somente as afirmativas II, III e IV são corretas. Somente as afirmativas I e II são corretas. Somente as afirmativas I e IV são corretas. Somente as afirmativas III e IV são corretas. Somente as afirmativas I e III são corretas. Respondido em 03/05/2021 06:11:41 Explicação: Analisando cada afirmativa : I. Uma forma muito simples de fazer uma busca em um vetor consiste em percorrer o vetor, elemento a elemento, para verificar se o elemento procurado é igual a um dos elementos do vetor. Correto. SEria uma busca sequencial. II. A pesquisa sequencial é extremamente simples e eficiente quando o número de elementos do vetor for muito grande. Falso. Se tivermos que procurar um elemento que está no fim do vetor ou que não seja encontrado, o tempo de execução será proporcional ao número de elementos. Então, quanto maior a lista, mais tempo levaremos. III. Na pesquisa binária, a cada interação do algoritmo o tamanho do vetor é dividido ao meio. Correto. IV. A pesquisa binária funciona corretamente quanto o conjunto de dados estiver desordenado. Falso. Por definição, a busca binária só pode atuar em listas ordenadas. Logo, apenas as afirmativas I e III estão corretas. 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. 5 e 5 6 e 2 6 e 4 6 e 1 7 e 1 Marque a afirmativa correta para a "Ordenação em Listas Lineares Sequenciais". É 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 fazer uma busca em um vetor já ordenado, dividindo o espaço de busca ao meio e verificando se o dado está no meio ou, antes do meio ou depois do meio. Consiste em adicionar um valor no vetor, alterando a ordem existente e ajustando o total de elementos. Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos. 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 Analise o seguinte trecho de algoritmo de ordenação de dados, cujos elementos estão dispostos em um vetor de nome v com n elementos. ... { 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; } } ... Assinale o método ao qual o trecho de algoritmo pertence. Inserção Bolha Seleção Heapsort Quicksort 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 Heapsort Bublesort Quicksort Shellsort Este vetor foi ordenado pelo método: Ordenação por inserção (insertion sort). Mergesort. Método da bolha (bubble sort). Quicksort. Ordenação por seleção (selection sort). Respondido em 03/05/2021 06:12:27 Explicação: O bubblesort trabalha comparando e trocando, se preciso, duplas de dados vizinhos. Portanto, pelo comportamento na sequÊncia descrita temos o método da bolha ou bubblesort. 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); 8 6 5 4 9 Respondido em 03/05/2021 06:12:34 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 Analisando o trecho de código a seguir: inicio=0; fim= tamanho - 1; meio=(inicio+fim)/2; while(procura != nomeVetor[meio] && inicio != fim) { if(procura > nomeVetor[meio]) inicio=meio+1; else fim=meio; meio=(inicio+fim)/2; } if(nomeVetor[meio]==procura) cout<<"\n....: "< < outroVetor[meio]<<endl; else cout<<"\nDado nao encontrado\n";</endl; Pode-se afirmar que:trata-se da implementação do algortimo de busca sequencial trata-se da implementação do algortimo de busca binária. trata-se da implementação do algortimo de ordenação bolha. trata-se da implementação do algortimo de ordenação por inserção. trata-se da implementação do algortimo de ordenação por seleção. Considere a função misterio e o trecho abaixo. void misterio(int v[ ], int n) { //n é o número de elementos de v int i, j, m, aux; for (j = 0; j < n-1; j++) { m = j; for (i = j+1; i < n; i++) { if (v[i] < v[m]) m = i; } aux = v[j]; v[j] = v[m]; v[m] = aux; } } Trecho na main : int v[4] = {40,30,10,20}; misterio(v, 4); Marque a opção correta. Como ficará o vetor após a execução da função misterio ? 5 10 20 30 10 20 30 40 10 20 40 30 10 30 40 20 10 30 20 40 Respondido em 03/05/2021 06:12:50 Explicação: O aluno precisa fazer um teste de mesa para achar a solução. A função implementa a ordenação por seleção, colocando o vetor de entrada em ordem crescente. Em relação à classificação do método de ordenação, assinale abaixo aquele que, durante o processo de ordenação, só usa a memória principal: Ordenação Interna Ordenação Simples Ordenação Simples Externa Ordenação Eficiente Ordenação Externa if(vet[j] < vet[j-1] ) { aux=vet[j]; vet[j-1]= vet[j]; 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]< 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; } Qual a importância de se entender a "ordenação" de dados ? A ordenação é a base na qual, muitos algoritmos são construídos. Entendendo a ordenação, tem-se conhecimento para manter outros problemas. A ordenação é a base na qual, muitos algoritmos são construídos. Entendendo a ordenação, tem-se conhecimento para resolver outros problemas. A ordenação é a base na qual, muitos sistemas são construídos. Entendendo a ordenação, tem-se conhecimento para resolver outros problemas. A ordenação é a base na qual, muitos programas são construídos. Entendendo a ordenação, tem-se conhecimento para manter outros problemas. A ordenação é a base na qual, muitos sistemas são construídos. Entendendo a ordenação, tem-se conhecimento para manter outros problemas. 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 3 4 0 -1 6 Respondido em 18/03/2021 07:18:30 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. São métodos ou algoritmos conhecidos de ordenação de dados por troca: bubble sort e quicksort.hashing e bubble sort.quicksort e hashing.busca por ordenação e ordenação shell.ordenação shell e hashing.Respondido em 18/03/2021 07:18:49 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. 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 final da 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 I, II, IV I, II, III, IV I, II, III I, III, IV Respondido em 18/03/2021 07:20:54 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 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ão corretas apenas as afirmativas I e II. Está correta apenas a afirmativa II. Nenhuma afirmação está correta. Estão corretas apenas as afirmativas I e III. Está correta apenas a afirmativa I. Respondido em 18/03/2021 07:23:23 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 comochar 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. 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 : Inserção Ordenação por inserção Substituição Busca Inicialização 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 é: Registro Variável Vetor Função Matriz for (int i = 0; i < n; i++) cout << L[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[i] << " " << L.nome[i] << endl; for (int i = 0; i < n; i++) cout << L[i].matricula << " " << L[i].nome << endl; for (int i = 0; i < n; i++) cout << L.matricula << " " << L.nome << endl; 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 << endl; for (int i = 0; i < n; i++) cout << L.matricula << " " << L.titulo << endl; 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.matricula[i] << " " << L.titulo[i] << endl; for (int i = 0; i < n; i++) cout << L[i] << endl; Respondido em 18/03/2021 07:28:52 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; 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 Inicialização Busca Inserção São métodos ou algoritmos conhecidos de ordenação de dados por troca: bubble sort e quicksort. quicksort e hashing. hashing e bubble sort. busca por ordenação e ordenação shell. ordenação shell e hashing. Respondido em 03/05/2021 06:13:26 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. 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 Lista Sequencial Pilha Sequencial Pilha Encadeada Lista Encadeada 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 << endl; 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.matricula[i] << " " << L.titulo[i] << endl; for (int i = 0; i < n; i++) cout << L.matricula << " " << L.titulo << endl; for (int i = 0; i < n; i++) cout << L[i] << endl; Respondido em 03/05/2021 06:13:37 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; Quanto a Pesquisa ou Busca Binária julgue os itens em V (VERDADEIRO) ou F (FALSO): Na operação de remoção de um valor do vetor passado como parâmetro, não é necessário primeiro verificar se a lista está vazia. Na operação de inserção de um valor do vetor passado como parâmetro, não é necessário primeiro verificar se a lista está cheia. O protótipo abaixo é válido para uma função de busca binária: int buscaBinaria(float v[], float valor , int n); A Busca Binária é mais eficiente quando o vetor não está ordenado. A Pesquisa Binária consiste em fazer uma busca em um vetor 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, comparando o valor de busca com o elemento da lista. Respondido em 03/05/2021 06:14:05 Explicação: >> A Pesquisa Binária consiste em fazer uma busca em um vetor 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, comparando o valor de busca com o elemento da lista. Resposta: Correto. Descreve exatamente as características. >> O protótipo abaixo é válido para uma função de busca binária: int buscaBinaria(float v[], float valor , int n); Resposta : Correto. É preciso termos o vetor com o conjunto de dados, o valor a ser procurado e o número de elementos. >> A Busca Binária é mais eficiente quando o vetor não está ordenado. Resposta: FAlso. O vetor não pode estar ordenado na busca binária. >> Na operação de remoção de um valor do vetor passado como parâmetro, não é necessário primeiro verificar se a lista está vazia. Resposta : É preciso verificar se a lista está vazia antes de realizar a remoção, pois não se pode retirar valor alguma de lista vazia. >> Na operação de inserção de um valor do vetor passado como parâmetro, não é necessário primeiro verificar se a lista está cheia. Resposta : É preciso verificar se a lista está cheia antes de realizar a inserção. pois não se pode inserir valor em vetor sem espaço.. 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[30] << endl; 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 << endl; 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 6 -1 3 4 Respondido em 03/05/2021 06:14:12 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. 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 é: Vetor Variável Função Matriz Registro 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 final da 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, IV I, III, IV I, II, III I, II I, II, III, IV Respondido em 03/05/2021 06:14:34 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 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 I. Está correta apenas a afirmativa II. Nenhuma afirmação está correta. Estão corretas apenas as afirmativas I e II. Estão corretas apenas as afirmativas I e III. Respondido em 03/05/2021 06:14:41 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. __________________________ é uma lista linear em que a alocação de memória pode ser estática, e que a forma de armazenamento é contígua ou sequencial na memória. Usamos este tipo de lista quando se tem em mente um tamanho pré-definido, ou seja, quando se sabe até onde a lista pode crescer. Lista Não Linear Lista Linear Não Sequencial Lista Linear de Alocação de Memória Lista Linear Sequencial Lista Linear Não Alocada 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] << endl; for (int i = 0; i < n; i++) cout << L.matricula << " " << L.titulo << 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[i].matricula << " " << L[i].titulo[30] << 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.nome << endl; 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 << endl; for (int i = 0; i < n; i++) cout << L[i].matricula << " " << L[i].nome[30] << endl; 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 : Inicialização Ordenação por inserção Inserção Substituição Busca 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 é: Função Variável Vetor Registro Matriz 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 Lista Encadeada Pilha Vetor Respondido em 16/04/2021 07:47:07 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. Algoritmo Pilha Inicio IniciarPilha(s) enquanto (não for o final das entradas) faca leia (num) se (num != 3) então Empilhar (s, num) senão Desempilhar(s) x := ElementoTopo(s) fimse fimenquanto fimalgoritmo Considere que, no trecho do algoritmo acima, representado por seu pseudocódigo, seja fornecido para num, sucessivamente, os valores inteiros 1, 2, 3, 4, 5, 3 e 6. Nesse caso, ao final da execução do algoritmo, o valor de x será igual a ... 5 e a pilha terá os valores 6, 3, 5, 4, 3, 2 e 1.2 e a pilha terá os valores 6, 4 e 1. 3 e a pilha terá os valores 6, 4 e 1. 5 e a pilha terá os valores 6, 4 e 1. 3 e a pilha terá os valores 6, 5, 4, 2 e 1. Respondido em 16/04/2021 07:51:36 Explicação: Seguindo o fluxo do algoritmo, serão empilhados 1 e 2. Ao chegar no 3, o valor 2 será desempilhado e armazenado em x. Continuando o loop, 4 é mepilhado, depois 5 é empilhado e ao chegar novamente em 3, o 5 é deempilhado e armazenado em x. Continuando o loop enquanto existe entrada, empilha-se o 6. Dessa forma temos que o valor em 5 é 5 e a pilha possui os valors 6, 4 e 1, sendo 6 no topo da pilha. Logo, a opção correta é 5 e a pilha terá os valores 6, 4 e 1. Na estrutura de dados tipo pilha, há duas operações básicas para empilhamento e desempilhamento. Essas operações são conhecidas como: PUSH e PULL; HEAP e POP; PUSH e POP. Base e Topo; PULL e POP; A estrutura de dados que segue a lógica LIFO (Last in First Out) é denominada : Árvore PilhaVetor Lista duplamente encadeada FilaRespondido em 16/04/2021 07:52:26 Explicação: Por definição, pilha é uma estrutura de dados que segue a lógica LIFO, em que o último a entrar será o primeiro a sair. A estrutura de dados do tipo pilha (stack) é um tipo abstrato de dado baseada no princípio: Da localidade de referência. De dividir para conquistar. Da indiferença. Last In First Out (LIFO). First In First Out (FIFO). Respondido em 16/04/2021 07:54:40 Explicação: A lógica da Pilha é: o último a entrar é o primeiro a sair logo, Last (último) In (dentro) First (primeiro) Out (fora) -> LIFO. Ling Tang, estudante de computação, precisou implementar parte de um jogo de cartões com figuras de animais. Alguns jogadores teriam que jogar os cartões na mesa, enquanto outros deveriam devolver os cartões na sequência inversa à jogada. Ling Tang estudou o mecanismo do jogo e decidiu usar a melhor estrutura de dados na sua implementação. Qual a estrutura escolhida ? árvore fila pilha grafo lista Respondido em 16/04/2021 07:55:47 Explicação: Pelas características do problema temos uma estrutura linear. Como menciona-se que deve-se devolver os cartões na ordem inversa à jogada, temos caracterizada a estrutura de dados pilha. Na pilha o último elemento a entrar será o primeiro a sair. 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. árvore fila lista grafo pilha Considere que, em uma estrutura de dados p do tipo pilha, 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 : 7 e 40 4 e 80 11 e 29 7 e 29 11 e 80 Respondido em 16/04/2021 07:59:50 Explicação: Pilha é uma estrutura de dados em que insere-se em uma extremidade e retira-se da mesma extremidade. Assim, acompanhando cada operação realizada tem-se : Insere-se 10, 5, 3 e 40, nesta ordem, devido a operação push (empilhar) Ao se fazer pop, temos que o último valor empilhado é desempilhado. Ou seja, retira-se o 40. Depois empilha-se o 11, 4 e 7. Após esses empilhamentos, a pilha fica : 10, 5, 3, 11, 4 e 7, sendo 7 no topo da pilha e sendo 10 na área de indice 0 (se usarmos vetor). Ao se fazer mais um pop, o 7 é desempilhado. Ao se fazer o último pop, o 4, que havia ficado no topo da pilha é desempilhado. Então, se fica com o 11 no topo da pilha. Como os dados da pilha são 10, 5, 3 e 11 (este último no topo da pilha), se somarmos todos os elementos teremos 29. Logo, a opção correta é 11 e 29. Quando executado, um programa tem acesso à áreas de memória. A área de memória que se destina, principalmente, à alocação dos registros de ativação denomina-se: ( ) área de pilha ( ) área de código ( ) área de registro ( ) área de dados ( ) área de heap Respondido em 03/05/2021 06:15:29 Explicação: Chamamos área de pilha uma espaço de memória especialmente reservado para organização de uma pilha de dados. Esta pilha é usada como memória auxiliar durante a execução de uma aplicação. As operações sobre esta área são push (empilha) e pop (desempilha). Qual das alternativas a seguir pode definir uma estrutura de pilha? Entrada de dados pelo final e saída pelo início. Entrada e saída de dados pelo final. Entrada e saída de dados pelo início. Entrada de dados pelo início e saída pelo final. Entrada e saída de dados em qualquer local. 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(pilha != -1) pilha[topo-1];} void pop(){ if(pilha != -1) pilha[topo];} void pop(){ if(topo != -1) topo--;} void pop(){ if(topo != -1) pilha[topo-1];} void pop(){ if(topo != -1) topo++;} 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? 7 e 2 Apenas o 2 Nenhum, a pilha estará vazia. 10 e 2 Apenas o 10 Respondido em 03/05/2021 06:15:47 Explicação: Empilhando e Desempilhando PUSH(10),PUSH(5),POP(),PUSH(7),POP(),PUSH(2),POP(),POP( ). 10 PUSH(10) 5 10 PUSH(5), PUSH(10) 10 POP() PUSH(10) 7 10 PUSH(7) PUSH(10) 10 POP() PUSH(10) 2 10 PUSH(11)PUSH(10) 10 POP() PUSH(10) POP() VAZIA Resposta CORRETA 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 ? fila lista árvore grafo pilha 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. II e III estão corretas. I e II estão corretas. I e IV estão corretas. I, II e V estão corretas. I, II e IV estão corretas. 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
Compartilhar