Baixe o app para aproveitar ainda mais
Prévia do material em texto
28/11/2016 AVA UNIVIRTUS http://univirtus277877701.saeast1.elb.amazonaws.com/ava/web/#/ava/AvaliacaoUsuarioHistorico/100654/novo/1 1/15 Atividade Prática PROTOCOLO: 201609251327048C1EDF0NELBIO DOS SANTOS JUNIOR - RU: 1327048 Nota: 100 Disciplina(s): Estrutura de Dados Data de início: 08/10/2016 11:57 Prazo máximo entrega: - Data de entrega: 31/10/2016 09:47 Questão 1/5 Utilizando a linguagem de programação C/C++ escreva um programa que teste estrutura de ordenação do tipo inserção, de números inteiros. O programa deverá permitir a digitação de um vetor com 10 elementos e possuir uma função que ordene estes valores utilizado o método Bubble Sort. Observe que para concluir esta tarefa o seu programa deverá imprimir o vetor não ordenado, o vetor ordenado e o resultado de cada passo do processo de ordenação. Nota: 20.0 28/11/2016 AVA UNIVIRTUS http://univirtus277877701.saeast1.elb.amazonaws.com/ava/web/#/ava/AvaliacaoUsuarioHistorico/100654/novo/1 2/15 Resposta: #include<stdio.h> void main(){ int nPos = 3, nAux = 0, nInd = 0, nAtual = 0, nTroca = 0, nChave = 0, nOpc ,nVetor[10] ; for (nAux = 0; nAuxa <= nPos 1; nAux ++){ printf ("Insira o %d numero:\n", nAux+1); scanf ("%d", &nVetor[nAux] ); printf ("\n"); } printf ("\nOriginal:") ; for (nAux = 0; nAux <= nPos 1; nAux++){ printf ("[%d]", nVetor[nAux] ); } nTroca = nPos 1; for (nInd = 0; nInd < nPos 1; nInd++){ if (nVetor[nAtual] > nVetor[nAtual+1] ){ for (nAux = 0; nAux <= nPos 1; nAux++){ printf ("[%d], nVetor[nAux]); } nAux = nVetor[nAtual]; nVetor[nAtual] = nVetor[nAtual+1]; nVetor[nAtual + 1] = nAux; printf("\n"); } } nTroca;} for (nAux = 0; nAux < nPos; nAux++){ printf ("[%d], nVetor[nAux]); } printf ("\n\n"); system ("pause"); return 0; } Questão 2/5 Utilizando a linguagem de programação C/C++ crie um programa que utilize a estrutura de dados conhecida como fila par a 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 conti dos armazenados nesta fila. Cabe ao programador a responsabilidade de avisar ao usuário erros comuns como fila cheia e vazia. Nota: 20.0 28/11/2016 AVA UNIVIRTUS http://univirtus277877701.saeast1.elb.amazonaws.com/ava/web/#/ava/AvaliacaoUsuarioHistorico/100654/novo/1 3/15 28/11/2016 AVA UNIVIRTUS http://univirtus277877701.saeast1.elb.amazonaws.com/ava/web/#/ava/AvaliacaoUsuarioHistorico/100654/novo/1 4/15 28/11/2016 AVA UNIVIRTUS http://univirtus277877701.saeast1.elb.amazonaws.com/ava/web/#/ava/AvaliacaoUsuarioHistorico/100654/novo/1 5/15 Resposta: #include<stdio.h> #define TAM 50 int fila[TAM], inicio = 0, fim = 0, cont = 0; void inserir(int valor){ if(cont == TAM){ printf("Fila cheia!\n"); return; } fila[fim] = valor; if(fim ==TAM 1) fim = 0; else fim++; cont++; printf("Inserido!\n"); } void apagar(){ if(cont == 0){ printf("Fila vazia!\n"); return; } if(inicio == TAM 1) inicio =0; else inicio =0; cont ; printf("Removido!\n"); } void mostrar(){ int i, j ; if(cont ==0){ printf("Fila vazia!\n"); return; } printf("\nFila:"); j = inicio; 28/11/2016 AVA UNIVIRTUS http://univirtus277877701.saeast1.elb.amazonaws.com/ava/web/#/ava/AvaliacaoUsuarioHistorico/100654/novo/1 6/15 for (i =0; i < cont; i++){ printf("\nPosicao %d = [%d].\t", i+1, fila[j]; if(j == TAM 1) j= 0; else j++; } printf("\n\nFim da fila.\n"); } int main(){ printf("\nSelecione a opcao desejada: (0 para sair):\n"); printf("1 Inserir\n"); printf("2 Apagar\n"); printf("3 Mostrar\n"); scanf("%d", &op); printf("\n"); switch (op) { case 1: printf("Digite o valor a ser inserido:\n"); scanf("%d", &valor); printf("\n); inserir(valor); break; case 2: apagar(); breack; case 3: mostrar(); breack; default: printf("Obrigado por usar.\n"); printf("\n"); breack; } }while (op != 0); system("pause"); return 0; free(fila); } Questão 3/5 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. Nota: 20.0 28/11/2016 AVA UNIVIRTUS http://univirtus277877701.saeast1.elb.amazonaws.com/ava/web/#/ava/AvaliacaoUsuarioHistorico/100654/novo/1 7/15 Resposta: #include <stdio.h> #include<stdlib.h> int Fat(int x){ int y; if(x == 1) y = 1; else y = Fat (x 1)*x; return(y); } void main(){ int num, res; printf("Digite um numero para determinar o fatorial:\n"); scanf("%d", &num); res = Fat(num); printf("\nO fatorial de %d e %d.\n\n", num, res ); system("pause"); } Questão 4/5 28/11/2016 AVA UNIVIRTUS http://univirtus277877701.saeast1.elb.amazonaws.com/ava/web/#/ava/AvaliacaoUsuarioHistorico/100654/novo/1 8/15 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 Nota: 20.0 Resposta: #include<stdio.h> #include<stdlib.h> void main(){ int *v; int i, m, soma = 0; printf("Informe o tamanho do vetor:\n"); scanf("%d", &m); 28/11/2016 AVA UNIVIRTUS http://univirtus277877701.saeast1.elb.amazonaws.com/ava/web/#/ava/AvaliacaoUsuarioHistorico/100654/novo/1 9/15 printf("\n"); v = (int *) malloc(m * sizeof(int)); if (v == NULL){ printf("Erro: Memoria insuficiente"); exit(1); } for(i = 0; i < m; i++){ printf("Informe os valores para cada vetor:\n"); scanf(%d", &v[i]); printf("\n"); } printf("Numeros digitados no vetor:\n\n"); for(i = 0; i < m; i++){ printf("Posicao[%d] valor = %d.\n", i, v[i]); } for(i = 0; i < m; i++){ soma = soma + v[i];} printf("\n"); printf("A soma do vetor e %d.\n", soma); printf("\n"); system("pause"); return 0; } Questão 5/5 Utilizando a linguagem de programação C/C++ crie um program que demonstre o uso de uma estrutura de dados do tipo fila de inteiros que use como elemento de armazenamento uma estrutura do tiplo lista encadeada. Certifiquese que sua estrutura de fila tenha funções para inserir, apagar, criar e mostrar o conteúdo da lista além de uma função para devolver o tamanho da fila e outra para esvaziar a fila. Observe também que, para resolver este problema você precisará, obrigatoriamente utilizar alocação dinâmica de memória e que para testar a fila o usuário deve ter acesso a um menu contendo todas as funções especificadas. Nota: 20.0 28/11/2016 AVA UNIVIRTUS http://univirtus277877701.saeast1.elb.amazonaws.com/ava/web/#/ava/AvaliacaoUsuarioHistorico/100654/novo/1 10/15 28/11/2016 AVA UNIVIRTUS http://univirtus277877701.saeast1.elb.amazonaws.com/ava/web/#/ava/AvaliacaoUsuarioHistorico/100654/novo/1 11/1528/11/2016 AVA UNIVIRTUS http://univirtus277877701.saeast1.elb.amazonaws.com/ava/web/#/ava/AvaliacaoUsuarioHistorico/100654/novo/1 12/15 Resposta: #include<stdio.h> #include<stdlib.h> struct Node{ int num; struct Node *prox; }; typedef struct Node node; int tam; int menu(void); void opcao(node *FILA, int op); void inicia(node *FILA); int vazia(node *FILA); node *aloca(); 28/11/2016 AVA UNIVIRTUS http://univirtus277877701.saeast1.elb.amazonaws.com/ava/web/#/ava/AvaliacaoUsuarioHistorico/100654/novo/1 13/15 void insere(node *FILA); node *retira(node *FILA); void exibe (node *FILA); void libera (node *FILA); int main(void){ node *FILA = (node *)malloc(sizeof(node)); if(!Fila){ printf("sem memoria disponivel!\n"); exit(1); } else{ inicia(FILA); int opt; do{ opt = menu(); opcao(FILA, opt); }while (opt); free(FILA); return 0; } } int menu(void){ int opt; printf("Escolha a opcao:\n\n"); printf("1. Adicionar elemento na fila.\n"); printf("2. Exibir a fila.\n"); printf("3. Retirar elemento da fila.\n"); printf("4. Zerar a fila.\n"); printf("5. Vizualizar tamanho da fila.\n"); printf("0. Sair.\n"); printf("Opcao: "); scanf("%d", &opt); printf("\n"); return opt; } void opcao(node *FILA, int op){ node *tmp; switch(op){ case 0: libera(FILA); break; case 1: insere(FILA); break; case 2: exibe(FILA); break; case 3: tmp = retira(FILA); if(tmp != NULL){ printf("Retirado: %d.\n\n", tmp > num); free(tmp);} break; case 4: libera(FILA); inicia(FILA); 28/11/2016 AVA UNIVIRTUS http://univirtus277877701.saeast1.elb.amazonaws.com/ava/web/#/ava/AvaliacaoUsuarioHistorico/100654/novo/1 14/15 printf("Fila esvaziada.\n\n"); break; case 5: printf("\n"); printf(" o tamanho da fila e %d.\n\n", tam); break; default: printf("Comando invalido.\n\n"); } } void inicia(node *FILA){ FILA>prox = NULL; tam = 0;} int vazia(node *FILA){ if(FILA> prox == NULL) return 1; else return 0;} node *aloca (){ node *novo = (node *)malloc(sizeof(node)); if(!novo){ printf("Sem memoria disponivel!\n"); exit(1);} else{ printf("Novo elemento: "); scanf("%d", &novo > num); printf("\n"); return novo;} } void insere(node *FILA){ node *novo = aloca(); novo > prox = NULL; if(vazia(FILA)) FILA > prox = novo; else{ node *tmp = FILA > prox; while (tmp>prox != NULL) tmp = tmp > prox; tmp > prox = novo;} tam++; } node *retira(node *FILA){ if(FILA > prox == NULL){ printf("Fila ja esta vazia.\n"); return NULL;} else{ node *tmp = FILA > prox; FILA > prox = tmp>prox; tam ; return tmp;} } void exibe(node *FILA{ if(vazia(FILA)){ printf("Fila vazia!\n\n"); return;} node *tmp = FILA > prox; 28/11/2016 AVA UNIVIRTUS http://univirtus277877701.saeast1.elb.amazonaws.com/ava/web/#/ava/AvaliacaoUsuarioHistorico/100654/novo/1 15/15 int count; printf("Valores do vetor:\n\n"); for(count = 0; count < tam; count++){ printf("Posicao[%d]> %d.\n",count +1, tmp>num); tmp = tmp>prox; printf("\n");} } void libera(node *FILA){ if (!vazia(FILA)){ node *proxNode, *atual; atual = FILA > prox; while(atual != NULL){ proxNode = atual > prox; free(atual); atual = proxNode;} } }
Compartilhar