Baixe o app para aproveitar ainda mais
Prévia do material em texto
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. AVA UNIVIRTUS http://univirtus-277877701.sa-east-1.elb.amazonaws.com/ava/web/#/a... 1 de 21 15/12/2016 20:55 AVA UNIVIRTUS http://univirtus-277877701.sa-east-1.elb.amazonaws.com/ava/web/#/a... 2 de 21 15/12/2016 20:55 AVA UNIVIRTUS http://univirtus-277877701.sa-east-1.elb.amazonaws.com/ava/web/#/a... 3 de 21 15/12/2016 20:55 AVA UNIVIRTUS http://univirtus-277877701.sa-east-1.elb.amazonaws.com/ava/web/#/a... 4 de 21 15/12/2016 20:55 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); AVA UNIVIRTUS http://univirtus-277877701.sa-east-1.elb.amazonaws.com/ava/web/#/a... 5 de 21 15/12/2016 20:55 node *aloca(); 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"); printf("0. Sair\n"); printf("1. Zerar fila\n"); printf("2. Exibir fila\n); printf("3. Adicionar elemento na fila\n); printf("4. Retirar elemento da fila\n); printf("Opcao: "); scanf("%d, &opt); return opt; } void opcao(node *FILA, int op) { node *tmp; switch(op) { case 0: libera(FILA); break; case 1: libera (FILA); inicia(FILA); break; case 2: exibe(FILA); break; case 3: insere(FILA); AVA UNIVIRTUS http://univirtus-277877701.sa-east-1.elb.amazonaws.com/ava/web/#/a... 6 de 21 15/12/2016 20:55 break; case 4: tmp= retira(FILA); if(tmp != NULL) { printf("Retirado: %3d\n\n", tmp->num); libera(tmp); } 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("Se memoria disponivel!\n"); exit (1); }else{ printf("Novo elemento: "); scanf("%d", &novo->num); 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-> = novo; } tam++; } nde *retira(node *FILA) AVA UNIVIRTUS http://univirtus-277877701.sa-east-1.elb.amazonaws.com/ava/web/#/a... 7 de 21 15/12/2016 20:55 { 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; tmp = FILA->prox; printf("Fila : "); while(tmp != NULL) { printf("%5d", tmp->num); tmp = tmp->prox; } printf("\n "); int count; for (count=0; count < tam ; count++) printf(" ^ "); printf("\nOrdem: "); for (count=0 ; count < tam ; count++) prinf("%5d", count+1); printf("\n\n"); } void libera(node *FILA) { if(!vazia(FILA)){ node *proxNode, *atual; atual = FILA->prox; while(atual != NULL) { proxNode = atual->prox; free (atual); atual = proxNode; } } } Usando a linguagem de programação C/C++ escreva um programa que calcule o fatorial de um número inteiro digitado AVA UNIVIRTUS http://univirtus-277877701.sa-east-1.elb.amazonaws.com/ava/web/#/a... 8 de 21 15/12/2016 20:55 pelo usuário. Para que você consiga completar esta tarefa, o programa terá que ter pelo menos uma função. AVA UNIVIRTUS http://univirtus-277877701.sa-east-1.elb.amazonaws.com/ava/web/#/a... 9 de 21 15/12/2016 20:55 Resposta: #include <stdio.h> #include <stdlib.h> double fatorial(double num); void imprime(); int main() { imprime(); return 0; } void imprime() { double num; printf("\n\nDigite um numero inteiro para o calculo do fatorial: " ); scanf("%if", &num); printf("O resultado e : %.0lf\n\n", fatorial(num)); system("pause"); } double fatorial(double num) // Calculo do fatorial { double aux; aux = num; AVA UNIVIRTUS http://univirtus-277877701.sa-east-1.elb.amazonaws.com/ava/web/#/a... 10 de 21 15/12/2016 20:55 while (num > 1) { aux = aux * (num-1); num--; } return (aux); } 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 AVA UNIVIRTUS http://univirtus-277877701.sa-east-1.elb.amazonaws.com/ava/web/#/a... 11 de 21 15/12/2016 20:55 Resposta: #include <stdio.h> #include <stdlib.h> #include <conio.h> main() { int *v; int n, i, soma=0; printf("\nDigite o tamanho do vetor: "); scanf("%d", &n); v=(int*)malloc(n * sizeof(int)); AVA UNIVIRTUS http://univirtus-277877701.sa-east-1.elb.amazonaws.com/ava/web/#/a... 12 de 21 15/12/2016 20:55 for(i=0; i<n; i++) {printf("Digite os numeros do vetor: "); scanf("%d", &v[i]); soma=soma+v[i]; } printf("\n\nValores digitados: \n"); for (i=0; i< n; i++) { printf("\n %d\n", v[i]); } printf("\n A soma dos valores do vetor e: %d \n", soma); } 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. AVA UNIVIRTUS http://univirtus-277877701.sa-east-1.elb.amazonaws.com/ava/web/#/a... 13 de 21 15/12/2016 20:55 Resposta: #include <stdio.h> #include <stdlib.h> #ifdef WIN32 #define limpa_tela system("cls") #else #define limpa_tela system("/usr/bin/clear") #define espera sleep(1) #endif main() { int p=0, ax=0; int in=0 ,at=0; int tr=0, key=0; //Quantidade de elementos do vetor while((p<=0) l l (p>100)){ printf("\nDigite a quantidade de numeros do vetor "); AVA UNIVIRTUS http://univirtus-277877701.sa-east-1.elb.amazonaws.com/ava/web/#/a... 14 de 21 15/12/2016 20:55 scanf("%d",&p);//criando o vetor int vetor[p] , orig[p], opc=-1; //Preenchendo os dados do vetor for(ax=0;ax<=p-1;ax++){ printf("\nInsira o numero %d: , ax+1); orig[ax]=vetor[ax]; } limpa_tela; while ((opc<=0) l l (opc>=4)){ printf("\n > Menu: "); printf("\n1. Selecao l Selection Sort"); printf("\n2. Insercao l Inserction Sort"); printf("\n3. Troca l Bubble Sort"); printf("\n > Resposta: "); scanf("%d", &opc); } printf("\nOrdenando: \n"); int i, j, t, m; if(opc==1){ //Selecao for (in=0; in<=p-1; in++){ for (ax=0; ax<=p-1; ax++){ printf("[%d]", vetor[ax]); } key=in; for(at=in+1; at<=p-1; at++){ if(vetor[at]<vetor[key]) key=at; } tr = vetor[key]; vetor[key]=vetor[in]; vetor[in]=tr; print("\n"); } } else if(opc==2){ //insercao for (in=1; in<p; in++){ for(ax=0;ax<=p-1; ax++){ printf("[%d]", vetor[ax]); } key = vetor[in]; at = in-1; while(at>=0 && vetor[at]> key){ AVA UNIVIRTUS http://univirtus-277877701.sa-east-1.elb.amazonaws.com/ava/web/#/a... 15 de 21 15/12/2016 20:55 vetor[at+1] = vetor[at]; at-=1; vetor[at+1] =key; } printf("\n"); } } else if (opc==3){ // Bubble tr = p-1; for(in =0; in<p; in++) { for(ax=0; ax<=p-1; ax++){ printf("[%d]", vetor[ax]); } for (at =0 ; at <tr; at++) { if (vetor[at] > vetor[at+1]) { ax =vetor[at]; vetor[at] = vetor[at+1]; vetor[at+1] = ax; } } tr--; printf("\n"); } } // vetor Original printf("\nOriginal: "); for (ax=0;ax<=p-1; ax++){ printf("[%d]" , orig[ax]); } // Vetor ordenado printf("\nOrdenada: "); for (ax=0; ax<=p-1; ax++){ printf("[%d]" ,vetor[ax]); getchar(); printf("\n\nPressione -Enter_ para encerrar\n\n"); getchar(); } 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 AVA UNIVIRTUS http://univirtus-277877701.sa-east-1.elb.amazonaws.com/ava/web/#/a... 16 de 21 15/12/2016 20:55 cheia e vazia. AVA UNIVIRTUS http://univirtus-277877701.sa-east-1.elb.amazonaws.com/ava/web/#/a... 17 de 21 15/12/2016 20:55 AVA UNIVIRTUS http://univirtus-277877701.sa-east-1.elb.amazonaws.com/ava/web/#/a... 18 de 21 15/12/2016 20:55 Resposta: #include <stdio.h> #include <stdlib.h> #define tam 50 int row[tam]; int ini=0; int fim=0; it cont=0; // Insere valor na fila void insere(int valor){ if(cont == tam){ printf("Fila cheia!\n"); return; } row[fim] =valor; if(fim == tam-1) fim=0; AVA UNIVIRTUS http://univirtus-277877701.sa-east-1.elb.amazonaws.com/ava/web/#/a... 19 de 21 15/12/2016 20:55 else fim++; cont++; printf("Inserido!\n\n"); } // Remove o primeiro elemento da fila void removerf(){ if (cont == 0){ printf("Fila vazia!\n"); return; } if(ini == tam-1) ini=0; else ini++; cont--; printf("Removido!\n"); } // Imprime a fila void imprime(){ int i, j; if(cont ==0){ printf("Fila vazia!\n"); return; } printf("\nFila: "); j = ini; for(i = 0; i< cont; i++){ printf("\n%d", row[j]); if(j == tam-1) j= 0; else j++; } } int main(){ int op = 0, valor; do{ printf("\n\nSelecione a opcao (0 para sair):\n"); printf("1 - Inserir\n"); printf("2 - Remover\n"); printf("3 - Imprimir\n); scanf("%d", &op); switch(op){ case 1:printf("\nDigite o valor a ser inserido:\n "); scanf("%d", &valor); insere(valor); break; AVA UNIVIRTUS http://univirtus-277877701.sa-east-1.elb.amazonaws.com/ava/web/#/a... 20 de 21 15/12/2016 20:55 case 2: removef(); break; case 3: imprime (); break; default: printf("Digite uma opcao valida\n"); break; } } while (op != 0); printf("\n"); system("pause"); return 1; } AVA UNIVIRTUS http://univirtus-277877701.sa-east-1.elb.amazonaws.com/ava/web/#/a... 21 de 21 15/12/2016 20:55
Compartilhar