Buscar

atividade pratica estrutura de dados corrigida

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

28/11/2016 AVA UNIVIRTUS
http://univirtus­277877701.sa­east­1.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://univirtus­277877701.sa­east­1.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://univirtus­277877701.sa­east­1.elb.amazonaws.com/ava/web/#/ava/AvaliacaoUsuarioHistorico/100654/novo/1 3/15
28/11/2016 AVA UNIVIRTUS
http://univirtus­277877701.sa­east­1.elb.amazonaws.com/ava/web/#/ava/AvaliacaoUsuarioHistorico/100654/novo/1 4/15

28/11/2016 AVA UNIVIRTUS
http://univirtus­277877701.sa­east­1.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://univirtus­277877701.sa­east­1.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://univirtus­277877701.sa­east­1.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://univirtus­277877701.sa­east­1.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://univirtus­277877701.sa­east­1.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. Certifique­se 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://univirtus­277877701.sa­east­1.elb.amazonaws.com/ava/web/#/ava/AvaliacaoUsuarioHistorico/100654/novo/1 10/15

28/11/2016 AVA UNIVIRTUS
http://univirtus­277877701.sa­east­1.elb.amazonaws.com/ava/web/#/ava/AvaliacaoUsuarioHistorico/100654/novo/1 11/1528/11/2016 AVA UNIVIRTUS
http://univirtus­277877701.sa­east­1.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://univirtus­277877701.sa­east­1.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://univirtus­277877701.sa­east­1.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://univirtus­277877701.sa­east­1.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;} 
} 
}

Outros materiais