sábado, 5 de setembro de 2015

Fila Circular com String





#include <stdio.h>
#include <stdlib.h>

#define TAMANHOVET 3
#define TAMANHOSTRING 20
char fila[TAMANHOVET][TAMANHOSTRING];
char palavra[TAMANHOSTRING];

int opcao;
int fim;
int inicio;
int vazia = 0;

void menu();
void adicionar(char *palavra[TAMANHOSTRING]);
char retirar();
void imprimir(char *palavra);

int main()
{
    opcao = 0;
    inicio = 0;
    fim = 0;
    while(opcao != 4)
    {
        menu();
        switch(opcao)
        {
        case 1:
            printf("Digite um Nome: ");
            fflush(stdin);
            scanf("%s ",&palavra);
            adicionar(palavra);
            break;
        case 2:
            if(vazia==0){
                printf("\n***FILA VAZIA***\n");
            } else{
                retirar();
            }
            break;
        case 3:

            imprimir(*palavra);
            if(vazia == 0){
        printf(" *** Nao Tem Nome na Fila ***\n");
       }
            break;
        case 4:
           printf(" *** Bay Bay ***");
            break;
        default:
            printf("\nOpcao invalida!\n");
        }
        printf("\n");
    }
}

void menu()
{
    printf("1 - Adicionar\n");
    printf("2 - Retirar\n");
    printf("3 - Imprimir Lista\n");
    printf("4 - Sair\n");
    printf("Digite a opcao: ");
    scanf("%d", &opcao);
    printf("\n");
}

void adicionar(char *palavra[TAMANHOSTRING])
{
    if(vazia==0){
        strcpy(fila[fim], palavra);
        fim++;
        if(fim == TAMANHOVET){
            fim = 0;
        }
        vazia = 1;
    } else if(inicio==fim){
        printf("\n***FILA CHEIA***\n");
    }else{
        strcpy(fila[fim], palavra);
        fim++;
    }if(fim == TAMANHOVET){
        fim=0;
    }
}

char retirar()
{
    if(vazia == 0){
        printf("\n ***Fila Vazia*** \n");
    }else{
        printf("\nRetirado a palavra da fila!\n");
        puts(fila[inicio]);
        inicio++;
        if(inicio==TAMANHOVET){
            inicio=0;
        }if(inicio==fim){
            vazia = 0;
        }
    }
}

void imprimir(char *palavra)
{
    int i;
    int a = 0;
    i = inicio;
    if(vazia == 1){
        while(a==0){
            printf("%s - ",fila[i]);
            i++;
            if(i==TAMANHOVET)
                i=0;
            if(i==fim)
                a=1;
        }
        printf("\n");
    }
}


Nenhum comentário:

Postar um comentário