Baixe o app para aproveitar ainda mais
Prévia do material em texto
ESTRUTURA DE DADOS - CCT0021 Turma: ESTRUTURA DE DADOS (CCT0021/1512397) 3003 Data: 6/4/2014 Aluno: _________________________________________ Nota: _______ TÍTULO DA ATIVIDADE ESTRUTURADA: Lista de Exercícios OBJETIVO: Pesquisar no material indicado e no conteúdo de aula e responder o questionário proposto. COMPETÊNCIAS/HABILIDADES: Conceituar a estrutura de dados fila Representar a estrutura de dados fila por contigüidade (fila simples) Compreender e implementar as operações com fila simples Desenvolver tarefas práticas com filas simples Questão - 1 DESENVOLVIMENTO: FILA • FILA SEQUENCIAL SIMPLES 1) Faça um programa em C++ para apresentar um menu várias vezes, com as seguintes opções : MENU 1- Enfileirar um número inteiro positivo. 2- Desenfileirar tudo e imprimir apenas os valores que são múltiplos de 5. 3- Terminar o programa Implemente, adequadamente, cada opção fornecida. 2) Faça um programa em C++ para ler uma sequência de caracteres (vetor de char) e enfileirá-los. Em seguida, desenfileire todos os caracteres e empilhe-os em uma pilha P seguindo as orientações:  Converta as letras para maiúsculas antes de empilhá-las  Qualquer outro caracter, empilhe sem alteração. Ao final, desempilhe tudo, exibindo o resultado na saída padrão. • FILA SEQUENCIAL CIRCULAR 3) Faça um programa em C++ para apresentar um menu várias vezes, com as seguintes opções : MENU 1- Enfileirar um valor inteiro não nulo 2- Desenfileirar um valor, exibindo na tela o seu dobro 3- Desenfileirar tudo, exibindo os valores desenfileirados sem alterações 4- Terminar o programa Implemente, adequadamente, cada opção fornecida usando funções para enfileirar e desenfileirar. 4) Faça um programa que leia um vetor de char e enfileire seus dados em duas filas : fila A (fila simples – de char ) e fila B (fila circular com contador – de inteiros) da seguinte forma: Se o caracter for dígito, converta-o para dígito e enfileire-o em B.  Se o caracter for letra, enfileire-o em A.  Qualquer outro caracter não deverá ser enfileirado. Ao final, desenfileire as filas B e A, nesta ordem, exibindo os seus dados. PRODUTO/RESULTADO: Lista de Exercícios respondida 1 - QUESTAO #include <stdio.h> #include <stdlib.h> #define LIM 7 #define FALSE 0 #define TRUE 1 #define UM 1 #define DOIS 2 #define TRES 3 int obterOpcao(void) { int opcao; printf("MENU\n"); printf("%2d - Enfileirar um numero inteiro positivo\n", UM); printf("%2d - Desenfileirar tudo e imprimir apenas os valores que sao multiplos de 5\n", DOIS); printf("%2d - Terminar o programa\n", TRES); printf("Opcao: "); scanf("%d", &opcao); return opcao; } int main(void) { int x,inicio, fim, fila[LIM], opcao, valor; inicio = 0; // fila vazia fim = 0; while ((opcao = obterOpcao()) != TRES) { switch (opcao) { case UM: printf("Valor a ser inserido na fila: "); scanf("%d", &valor); if (fim - inicio == LIM) { printf("Operacao frustrada - fila esgotada...\n"); } else{ if(inicio == fim){ fila[inicio] = valor; fim = fim + 1; } else{ fim = fim + 1; for(x = fim;x<=inicio;x--){ fila[x+1] = fila[x]; } fila[inicio] = valor; } } break; case DOIS: if (fim == LIM){ printf("Operacao frustrada - fila vazia...\n"); } else{ printf("Retirado \n%d\n", fim %5); fim = fim -1; printf("Operacao concluida com sucesso\n"); } break; } putchar('\n'); } return 0; } 2-QUESTAO #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> int main(void) { int x,y; char fila[10],pilha[10], temp[1]; printf("Entre com o nome:"); scanf("%s", fila); y = 0; for(x=0;x<=9;x++){ if (isalpha(fila[x])){ pilha[y] = toupper(fila[x]); } else{ pilha[y] = fila[x]; } y = y + 1; } for(x=0;x<=9;x++){ printf("%c", pilha[x]); } printf("\n"); system("pause"); return 0; } 3-QUESTAO #include <stdio.h> #include <stdlib.h> #define LIM 7 #define FALSE 0 #define TRUE 1 #define UM 1 #define DOIS 2 #define TRES 3 #define QUATRO 4 int obterOpcao(void) { int opcao; printf("MENU\n"); printf("%2d - Enfileirar um numero inteiro positivo\n", UM); printf("%2d - Desenfileirar um valor, exibindo na tela o seu dobro\n", DOIS); printf("%2d - Desenfileirar tudo, exibindo os valores desenfileirados sem altera??es\n", TRES); printf("%2d - Terminar o programa\n", QUATRO); printf("Opcao: "); scanf("%d", &opcao); return opcao; } int main(void) { int x,inicio, fim, fila[LIM], opcao, valor; inicio = 0; // fila vazia fim = 0; while ((opcao = obterOpcao()) != QUATRO) { switch (opcao) { case UM: printf("Valor a ser inserido na fila: "); scanf("%d", &valor); if (fim - inicio == LIM) { printf("Operacao frustrada - fila esgotada...\n"); } else{ if(inicio == fim){ fila[inicio] = valor; fim = fim + 1; } else{ fim = fim + 1; for(x = fim;x<=inicio;x--){ fila[x+1] = fila[x]; } fila[inicio] = valor; } } break; case DOIS: if (fim == 0){ printf("Operacao frustrada - fila vazia...\n"); } else{ printf("Retirado \n%d", fim * 2); fim = fim -1; printf("Operacao concluida com sucesso\n"); } break; case TRES: if (fim == 0){ printf("Operacao frustrada - fila vazia...\n"); } else{ printf("Retirado \n%d", fim); fim = fim -1; printf("Operacao concluida com sucesso\n"); } break; } putchar('\n'); } return 0; } 4-QUESTAO #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> int main(void) { char fila[10], filaA[10]; int filaB[10]; int i, x; int indexA = 0, indexB = 0; printf("Entre com o nome:");scanf("%s", fila); for(i=0 ; fila[i]!='\0'; i++){ if (isalpha(fila[i])){ filaA[indexA++] = fila[i]; }else if (isalnum(fila[i])){ x = fila[i] - '0'; filaB[indexB++] = x; } } printf("Fila B\n"); for(i=0 ; i<indexB ; i++){ printf("%d ", filaB[i]); } printf("\nFila A\n"); for(i=0 ; i<indexA ; i++){ printf("%c ", filaA[i]); } system("pause"); return 0; } É ISSO AÍ VALEU!!!
Compartilhar