Baixe o app para aproveitar ainda mais
Prévia do material em texto
Questão: Utilizando a linguagem de programação C/C++ crie um programa que utilize a estrutura de dados conhecida como fila para armazenar até 50 inteiros que use como elemento de armazenamento um vetor (array). Observe que seu programa deverá possuir pelo menos três funções do tipo void chamadas de inserir, apagar e mostrar e que o usuário dever ter acesso a um menu de opções que permita a inclusão, exclusão e apresentação dos valores contidos armazenados nesta fila. Cabe ao programador a responsabilidade de avisar ao usuário erros comuns como fila cheia e vazia. Resposta: #include<stdio.h> #include<stdlib.h> //insere valor na fila void inserir(int valor) { if (cont == ) { printf("Fila cheia!\n"); return; } fila[fim] = valor; if (fim == TAM - 1) fim = 0; else fim++; cont++; printf("Inserido!\n"); } //remove o primeiro elemento da fila void apagar() { if (cont == 0) { printf("Fila vazia!\n"); return; } if (inicio == TAM - 1) inicio = 0; else inicio++; cont--; printf("Removido!\n"); } //Imprime a fila void mostrar() { int i, j; if (cont == 0) { printf("Fila vazia!\n"); return; } printf("\nFila:"); j = inicio; for (i = 0; i < cont; i++) { printf("\n%d", fila[j]); if (j == TAM - 1) j = 0; else j++; } printf("\nFim da fila\n"); } int main() { int op = 0, valor; do { printf("\nSelecione a opcao(0 para sair):\n"); printf("1 - Inserir\n"); printf("2 - Apagar\n"); printf("3 - Mostrar\n"); scanf_s("%d", &op); switch (op) { case 1: printf("Digite o valor a ser inserido:\n"); scanf_s("%d", &valor); inserir(valor); break; case 2: apagar(); break; case 3: mostrar(); break; default: printf("Digite uma opcao valida\n"); break; } } while (op != 0); printf("\n"); system("pause"); return 1; } Programa: Visual Studio Questão: Utilizando a linguagem de programação C/C++ você deve criar um programa capaz de armazenar um número indefinido de inteiros na memória. Este programa deverá solicitar ao usuário o tamanho do vetor que armazenará este número, criar as estruturas necessárias, solicitar ao usuário que digite cada um dos números que serão armazenados e imprimir o conjunto de números armazenados e a soma destes números Resposta: #include<stdio.h> #include<stdlib.h> #include <conio.h> #include <math.h> int main() { int x, soma = 0, *Vetor, Tamanho; printf("Informe o tamanho do Vetor: "); scanf_s("%d", &Tamanho); Vetor = (int*)malloc(sizeof(int)); for (x = 0; x<Tamanho; x++) { printf("Informe o valor %d: ", x + 1); scanf_s("%d", &Vetor[x]); soma = soma + Vetor[x]; } printf("Total dos valores informados: %d", soma); _getch(); }; Programa: Visual Studio Questão: Usando a linguagem de programação C/C++ escreva um programa que calcule o fatorial de um número inteiro digitado pelo usuário. Para que você consiga completar esta tarefa, o programa terá que ter pelo menos uma função. Resposta: #include <stdio.h> #include <conio.h> int main() { int fat, n; printf("Insira um valor para o qual deseja calcular seu fatorial: "); scanf_s("%d", &n); for (fat = 1; n > 1; n = n - 1) fat = fat * n; printf("\nFatorial calculado: %d", fat); _getch(); return 0; } Programa: Visual Studio APOL 4 ELIZANGELA TURIANO ALVES - RU: 1352482 Nota: 100 PROTOCOLO: 201610161352482CB42DE Questão 1/5 - Estrutura de Dados Tendo como base um vetor de 1024 posições, qual das afirmações a seguir está correta? Considerando o conteúdo ministrado na aula 4, assinale a alternativa CORRETA Nota: 20.0 E Caso o vetor esteja ordenado, se utilizarmos a pesquisa sequencial, o número máximo de pesquisas que podem ser realizadas neste vetor é de 1024. Mas se utilizarmos pesquisa binária, o número máximo de pesquisas será 11 Questão 2/5 - Estrutura de Dados Leia e Analise: I – Se o vetor já estiver pré ordenado, o método de ordenação por seleção é o mais rápido. II – Se o vetor já estiver pré ordenado, o método de ordenação por inserção é o mais rápido. Você acertou! Aula 04 / Slide 12 a 15 III – Independente se o vetor já estiver pré ordenado ou não, tanto o método de ordenação por seleção quanto o método de ordenação por inserção demoram o mesmo tempo para a ordenação completa Considerando o conteúdo ministrado na aula 4 e com base nas afirmações I, II e II, responda: Nota: 20.0 A Somente a I está correta Questão 3/5 - Estrutura de Dados Com base nas afirmações I, II e II, sobre pesquisa binária, responda: I – A pesquisa binária sempre verifica o elemento central do conjunto de dados que está pesquisando. II – A pesquisa binária funciona corretamente somente em vetores ordenados. III – Em uma pesquisa binária, o número máximo de pesquisa que podem ser realizadas em um conjunto de dados, aumenta de 1 (uma) unidade cada vez que o conjunto de dados dobra de tamanho Considerando o conteúdo ministrado na aula 4, assinale a alternativa CORRETA Nota: 20.0 D As respostas I, II e III estão corretas Questão 4/5 - Estrutura de Dados Em pesquisa binária, qual a sequência exata de passos para realizar a pesquisa Você acertou! Aula 04 / slides 5 a 11 Você acertou! Aula 04 / Slides 13, 14 e 15 Considerando o conteúdo ministrado na aula 4, assinale a alternativa CORRETA Nota: 20.0 C 1º Dividir o conjunto de dados ao meio; 2º Pesquisar o elemento central do conjunto; 3º Se não for o valor desejado verificar se está acima ou a baixo deste valor central. Se o valor desejado for maior, repetir os passos anteriores na metade superior deste conjunto, se o valor desejado for menor, repetir os passos anteriores na metade inferior deste conjunto Questão 5/5 - Estrutura de Dados Com base no algoritmo de ordenação a seguir, quantas trocas de posições de valores ocorrerão no vetor. main() { int vetor[8] = { 8, 16, 34, 13, 7, 3, 12, 9 }; int x, y, aux; for(x=0; x<8; x++) for(y=x+1; y<9; y++) Você acertou! Aula 04 / Slide 13, 14 e 15 if(vetor[x] < vetor[y]) { aux = vetor[x]; vetor[x] = vetor[y]; vetor[y] = aux; } } Considerando o conteúdo ministrado na aula 4, assinale a alternativa CORRETA Nota: 20.0 C 10 Você acertou! Aula 04 / Slide 8 Questão 1/5 Estrutura de Dados Na tentativa de criar um programa para testar os conceitos de filas, você escreveu o seguinte código: No entanto, o seu programa não funcionou e você precisa encontrar onde está o erro e cabe a você garantir que o código apresentado atenda a estrutura básica de um programa contendo uma lista. Considerando as opções a seguir, maque aquela que contém a linha de código que está errada. A temp = cauda; Questão 2/5 Estrutura de Dados Considerando o código a seguir: Indique qual das opções a seguir apresenta o resultado que será visto na janela do console caso este programa seja executado. A 0 1 6 7 7 8 8 12 23 45 Pressione qualquer tecla para continuar. . . Tratase de uma função de ordenação e que deve ser seguida passo a passo para o entendimento Questão 3/5 Estrutura de Dados Com relação aos conceitos de Pilhas e Filas, informe a questão correta com base nas afirmativas a seguir: I – FIFO – First In Firt Out, é o conceito utilizado para Pilhas. II – FIFO – First In Firt Out, é o conceito utilizado para Filas. III – LIFO – Last In Firt Out, é o conceito utilizado para Pilhas. IV – LIFO – Last In Firt Out, é o conceito utilizado para Filas. Considerando o conteúdo ministrado na aula 5, assinale a alternativa CORRETA: A Asquestões II e III estão corretas Questão 4/5 Estrutura de Dados Sobre Filas, é correto afirmar: Considerando o conteúdo ministrado na aula 5, assinale a alternativa CORRETA C O primeiro elemento que entrou na Fila, obrigatoriamente deve ser o primeiro a sair Questão 5/5 Estrutura de Dados Sobre realizar pesquisas em Listas Duplamente Encadeadas Circulares, qual afirmativa está incorreta: Considerando o conteúdoministrado na aula 6, assinale a alternativa INCORRETA A Não fazemos pesquisas em Listas Duplamente Encadeadas Circulares, por não termos como saber onde termina e onde começa a Lista Questão 1/5 - Estrutura de Dados Quais são os tipos de Estruturas Listas? Lista encadeada; Lista duplamente encadeada; Lista encadeada circular; Lista duplamente encadeada circular Questão 2/5 - Estrutura de Dados Qual a diferença entre as estruturas de repetição “While” e “Do While”? Na estrutura “while” as rotinas a serem executadas ficam em loop “enquanto” a condição lógica de finalização seja “verdadeira”. Já no caso da estrutura “Do While”, as rotinas ficam em loop “até” que a condição lógica seja verdadeira. Outra diferença está no fato que as rotinas da estrutura “Do While” serão executadas pelo menos uma vez, pelo fato da verificação da condição de repetição ser ao final da estrutura. Já no caso da estrutura “while”, como a condição está no início, as rotinas da estrutura podem nem serem executadas. Questão 3/5 - Estrutura de Dados Explique Estrutura Pilha. Pilhas são estruturas que utilização alocação dinâmica de memória e variáveis ponteiros para o armazenamento temporário de dados. Os dados são empilhados de forma a ordenar de acordo com a entradas de dados na Pilha, onde o último elemento que entrou na Pilha deve ser o primeiro a sair. Questão 4/5 - Estrutura de Dados O que são ponteiros? São variáveis que armazenam endereços de memória de outras variáveis do mesmo tipo. Ex.: se uma variável ponteiro é do tipo inteiro, ela somente pode receber endereços de memória de outras variáveis ponteiro. Questão 5/5 - Estrutura de Dados Qual a vantagem de utilizarmos a estrutura de repetição “for” em comparação a estrutura “while”? Nota: 20.0 Para que as rotinas dentro de uma estrutura “while” sejam executadas, a condição lógica deve ser verdadeira. Com isso as variáveis da condição devem ser inicializadas antes do comando “while” e dentro da estrutura deve haver uma condição de alteração desta variável de controle. Já na estrutura “for”, na mesma linha de comando do “for” está a inicialização da variável de controle, a condição de finalização do loop e o incremento desta variável de controle. Questão 1/10 Sobre incluir elementos em uma Lista, responda: I – Para incluir registros em uma Lista, estes podem ser incluídos no início, no final ou no meio da Lista. Para o caso de incluir no final e no início, temos que tomar o cuidado de após conectar o registro da Lista, atualizar as respectivas variáveis de controle. II – Os passos corretos e em ordem, para incluir registros em uma Lista são: 1º Alocar espaço de memória; 2º Armazenar os dados; 3º Conectar (ligar) o registro na Lista; 4º Atualizar as variáveis de controle. III – Se a Lista não for ordenada, com relação a programação, é mais fácil incluir no início ou no final da Lista Considerando o conteúdo ministrado na aula 6, assinale a alternativa CORRETA D As questões I, II e III estão corretas Questão 2/10 Lista é um conceito de trabalho, uma metodologia com regras, similar a Pilhas e Filas. Para a montagem das Listas utilizamos alocação dinâmica de memória, ponteiros e registros. Com base nisso e com as afirmações a seguir, responda: I – Assim como Pilhas e Filas, em Listas somente podemos incluir no início ou no final de uma lista. II – Diferente de Pilhas e Filas, em Listas podemos incluir no meio de uma Lista. III – Em Listas podemos incluir de forma ordenada as informações. Deste modo, podemos em uma mesma Lista incluir no início, no final ou no meio (entre dois registros). Considerando o conteúdo ministrado na aula 6, assinale a alternativa com a sequência CORRETA. E Estão corretas as questões II e III. Questão 3/10 Quantos são e quais são os tipos de Listas que podemos ter: Considerando o conteúdo ministrado na aula 6, assinale a alternativa CORRETA B 4 Encadeada, Duplamente Encadeada, Encadeada Circular e Duplamente Encadeada Circular Questão 4/10 Sobre realizar pesquisas em Listas Duplamente Encadeadas Circulares, Considerando o conteúdo ministrado na aula 6, assinale a alternativa INCORRETA (ERRADA). A Não fazemos pesquisas em Listas Duplamente Encadeadas Circulares, por não termos como saber onde termina e onde começa a Lista. Questão 5/10 Para armazenar dados em uma Pilha, os seguintes passos devem ser realizados na respectiva ordem Considerando o conteúdo ministrado na aula 5, assinale a alternativa CORRETA B 1. Alocar espaço de memória 2. Armazenar os dados no espaço alocado 3. Conectar o registro alocado na Pilha 4. Atualizar variáveis de controle Questão 6/10 Sobre registros utilizados em Listas Duplamente Encadeadas, Considerando o conteúdo ministrado na aula 6, assinale a alternativa INCORRETA (ERRADA). E Os registros possuem duas variáveis ponteiros do mesmo tipo do registro, para armazenar o endereço do próprio registro e do próximo da Lista. Questão 7/10 Para conectarmos um determinado registro entre dois outros registros de uma Lista (incluir no meio), se não seguirmos uma ordem correta de procedimentos, podemos perder o encadeamento de nossa Lista. Para incluir fazemos primeiramente uma pesquisa para saber onde incluir. Se após a rotina de pesquisa para incluir, ficou definido que a variável ponteiro “aux” contem o endereço do registro que vai anteceder o registro que vai entrar, e a variável “ptr” contem o endereço do registro a ser incluído. Considerando o conteúdo ministrado na aula 6, qual rotina em programação devemos utiliza? Assinale a alternativa CORRETA. B ptr->ante = aux; ptr->prox = aux->prox; ptr->prox->ante = ptr; ptr→ante->prox = ptr; Questão 8/10 Sobre Listas, é correto afirmar: I – Assim como em Filas, precisamos de variáveis de controle para armazenar os endereções dos registros de início e final da Lista. II – Em Listas Circulares podemos ter uma única variável de controle que aponte para pelo menos um endereço de memória de um registro que esteja na Lista. III – Em Listas precisamos de uma variável ponteiro auxiliar para podermos percorrer cada registro da Lista. Considerando o conteúdo ministrado na aula 6, assinale a alternativa com a sequência CORRETA. Questão 9/10 Com relação as informações sobre algoritmos de Pilhas e Filas Fila a seguir, responda I – Quando trabalhamos tanto com Pilhas quanto com Filas, precisamos ter uma variável de controle para informar aoprograma onde estas estruturas começam e outra variável de controle para informar ao programa onde estas estruturas terminam. II – Quando trabalhamos com o conceito Pilha, precisamos de uma única variável de controle para informar onde é oinício da Pilha. Já para o conceito de Fila, precisamos de duas variáveis de controle, uma para informar ao programaonde a Fila começa e outra para informar onde a Fila termina. III – No algoritmo de Pilha, se a variável de controle estiver com o conteúdo NULL, significa que não existe nenhum dadoarmazenado na Pilha. IV – Quando retiramos dados de uma Fila, temos que seguir a seguinte ordem: 1º trabalhar com o conteúdo do registro; 2º armazenar o endereço do registro em uma variável auxiliar; 3º atualizar a variável de controle par o próximo endereço da Fila; 4º liberar o espaço de memória que está na variável auxiliar. Se não seguirmos corretamente estes passos,podemos perder o encadeamento da Fila. Considerando o conteúdo ministrado na aula 5, assinale a alternativa CORRETA C As questões II, III e IV estão corretas Questão 10/10 Sobre incluir elementos em uma Lista: I – Para incluir registros em uma Lista, estes podem ser incluídos no início, no final ou no meio da Lista. Para o caso de incluir no final e no início, temos que tomar o cuidado de após conectar o registro da Lista, atualizar as respectivas variáveis de controle. II – Os passos corretos e em ordem, para incluir registros em uma Lista são: 1º Alocarespaço de memória; 2º Armazenar os dados; 3º Conectar (ligar) o registro na Lista; 4º Atualizar as variáveis de controle. III – Se a Lista não for ordenada, com relação a programação, é mais fácil incluir no início ou no final da Lista. Considerando o conteúdo ministrado na aula 6, assinale a alternativa com a sequência CORRETA. D As questões I, II e III estão corretas. Questão 1/10 - Estrutura de Dados Sobre incluir elementos em uma Lista: I – Para incluir registros em uma Lista, estes podem ser incluídos no início, no final ou no meio da Lista. Para o caso deincluir no final e no início, temos que tomar o cuidado de após conectar o registro da Lista, atualizar as respectivas variáveis de controle. II – Os passos corretos e em ordem, para incluir registros em uma Lista são: 1º Alocar espaço de memória; 2º Armazenar os dados; 3º Conectar (ligar) o registro na Lista; 4º Atualizar as variáveis de controle. III – Se a Lista não for ordenada, com relação a programação, é mais fácil incluir no início ou no final da Lista. Considerando o conteúdo ministrado na aula 6, assinale a alternativa com a sequência CORRETA. D As questões I, II e III estão corretas. Questão 2/10 - Estrutura de Dados Sobre realizar pesquisas em Listas Duplamente Encadeadas Circulares, Considerando o conteúdo ministrado na aula 6, assinale a alternativa INCORRETA (ERRADA). A Não fazemos pesquisas em Listas Duplamente Encadeadas Circulares, por não termos como saber onde termina e onde começa a Lista. Questão 3/10 - Estrutura de Dados A função a seguir lista na tela todos os registros de uma determinada Lista Encadeada e não Circular. Se esta Lista fosse Circular, quis alterações deveriam ser realizadas para não corrermos o risco de ficarmos em loop? listar() { ptr = prim; while( ptr != NULL) { printf(“Nome: %s \n”, ptr> nome); ptr = ptr> prox; } } Considerando o conteúdo ministrado na aula 6, assinale a alternativa CORRETA. C aux = ptr = prim; do { printf(“Nome: %s \n”, ptr> nome); ptr = ptr> prox; } while( ptr != aux); Questão 4/10 - Estrutura de Dados Sobre Pilhas, é correto afirmar: Considerando o conteúdo ministrado na aula 5, assinale a alternativa CORRETA E O último elemento que entrou na Pilha, obrigatoriamente deve ser o primeiro a sair Questão 5/10 - Estrutura de Dados Para armazenar dados em uma Pilha, os seguintes passos devem ser realizados na respectiva ordem Considerando o conteúdo ministrado na aula 5, assinale a alternativa CORRETA B 1. Alocar espaço de memória 2. Armazenar os dados no espaço alocado 3. Conectar o registro alocado na Pilha 4. Atualizar variáveis de controle Questão 6/10 - Estrutura de Dados Para conectarmos um determinado registro entre dois outros registros de uma Lista (incluir no meio), se não seguirmos uma ordem correta de procedimentos, podemos perder o encadeamento de nossa Lista. Para incluir fazemos primeiramente uma pesquisa para saber onde incluir. Se após a rotina de pesquisa para incluir, ficou definido que a variável ponteiro “aux” contem o endereço do registro que vai anteceder o registro que vai entrar, e a variável “ptr” contem o endereço do registro a ser incluído. Considerando o conteúdo ministrado na aula 6, qual rotina em programação devemos utiliza? Assinale a alternativa CORRETA. B ptr>ante = aux; ptr>prox = aux>prox; ptr>prox>ante = ptr; ptr>ante>prox = ptr; Questão 7/10 - Estrutura de Dados Sobre a rotina do Programa a seguir: struct Dados { char nome[30]; struct Dados *ante, *prox; } *prim, *ulti, *ptr; teste() { while( prim != NULL) { ptr = prim; prim = prim> prox; free(ptr); } ulti = NULL; } Considerando o conteúdo ministrado na aula 6, assinale a alternativa INCORRETA (ERRADA). C A linha de comando “ptr = prim;” é desnecessária, pois podemos liberar espação de memória diretamente com a variável “prim”. Ficando deste modo o comando: “free(prim>prox);”. Questão 8/10 - Estrutura de Dados Sobre registros utilizados em Listas Duplamente Encadeadas, Considerando o conteúdo ministrado na aula 6, assinale a alternativa INCORRETA (ERRADA). E Os registros possuem duas variáveis ponteiros do mesmo tipo do registro, para armazenar o endereço do próprio registro e do próximo da Lista. Questão 9/10 - Estrutura de Dados Quantos são e quais são os tipos de Listas que podemos ter? Considerando o conteúdo ministrado na aula 6, assinale a alternativa CORRETA. B 4 Encadeada, Duplamente Encadeada, Encadeada Circular e Duplamente Encadeada Circular; Questão 10/10 - Estrutura de Dados Com relação as informações sobre Fila a seguir, responda I – Quando declaramos um registro que será utilizado para a criação de Filas, temos que criar um campo ponteiro do mesmo tipo do registro para conter o endereço de memória do próximo registro a entrar na Fila. Deste modo, quando tiramos um registro da Fila, sabemos onde está o anterior a este que saiu. II – Quando declaramos um registro que será utilizado para a criação de Filas, temos que criar um campo ponteiro do mesmo tipo do registro para conter o endereço de memória do registro que entrou antes dele na Fila. Deste modo, quando tiramos um registro da Fila, sabemos onde está o anterior a este que saiu. III Quando declaramos um registro que será utilizado para a criação de Filas, temos que criar um campo ponteiro do mesmo tipo do registro para conter o endereço de memória deste mesmo registro. Deste modo é que o programa sabe onde está cada registro da Fila na memória. Considerando o conteúdo ministrado na aula 5, assinale a alternativa CORRETA A Somente a afirmação I está correta Questão 1/10 - Estrutura de Dados Sobre alocação dinâmica de memória, é correto afirmar: Considerando o conteúdo ministrado na aula 5, assinale a alternativa CORRETA D A principal vantagem de trabalharmos com alocação dinâmica de memória é que não precisamos definir a quantidade de espaço a ser alocado em linha de código. O espaço de memória é alocado de acordo com a necessidade em tempo de execução do programa Questão 8/10 - Estrutura de Dados Sobre Listas, é correto afirmar: I – Assim como em Filas, precisamos de variáveis de controle para armazenar os endereções dos registros de início e final da Lista. II – Em Listas Circulares podemos ter uma única variável de controle que aponte para pelo menos um endereço de memória de um registro que esteja na Lista. III – Em Listas precisamos de uma variável ponteiro auxiliar para podermos percorrer cada registro da Lista. Considerando o conteúdo ministrado na aula 6, assinale a alternativa com a sequência CORRETA. D Todas as questões estão CORRETAS. Questão 1/5 Explique o conceito de variáveis “locais” e “globais” utilizadas em funções comuns, assim como a utilização de variáveis em funções recursivas. Quando uma variável é declarada como “global”, é pode ser utilizada por todas as funções do programa. Deste modo se ~em alguma função seu conteúdo for alterado, isto influência todas as funções, pois por ser “global”, ela está em uma posição única de memória. Já uma variável “local”, ela somente existe dentro da função que foi declarada, ou seja, se foi criada dentro da função “A”, as demais funções não têm acesso ao seu conteúdo. No caso de funções recursivas, onde as variáveis possuem o mesmo nome, como em cada chamada da função é criada uma nova instância da função, também é criado uma nova variável em um novo espaço de memória. Deste modo, embora tenham o mesmo nome seus conteúdos são distintos. Questão 2/5 Em um programa, podemos substituir a utilização da estrutura de decisão “switch” pela estrutura “if”? Justifique sua resposta. Sim. Pois podemos utilizar o conceito de “ifs aninhados“ onde cada “case” do “switch” será substituído por um “if” dentro de outro com a utilização da condição “else” do “if”. Questão 3/5 O que são Listas Duplamente Encadeadas Circulares. São estruturas onde cada registroda estrutura possui o endereço de memória de próximo registro e do registro anterior, caracterizando assim lista duplamente encadeada. Sendo que o último registro possui o endereço de memória do primeiro registro da lista e o primeiro registro da lista possui o endereço do último registro da lista, caracterizando assim a lista circular. Questão 4/5 Diferencie Estrutura Pilha de Estrutura Fila. Tanto Pilha quanto Fila são estruturas de armazenamento temporário de dados. A diferença está na metodologia de trabalho de cada uma, enquanto na Pilha o último elemento que entre deve ser o primeiro a sair, na Fila o primeiro que entrou tem que ser o primeiro a sair. Questão 5/5 Cite dois tipos de ordenação de vetores. Ordenação por seleção e ordenação por inserção.
Compartilhar