Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Walquiria Avelar Mourão

Problemas com filas c++

Recommended Posts

No código deve conter as especificações abaixo:
1) a fila de existir; Sobre a rotina ADICIONAR
A rotina deve adicionar (inserir) um único elemento no final da fila (sem looping)
Não pode adicionar além do limite (exibir mensagem: número máximo de dados atingido)
A rotina deve exibir o elemento adicionado e a sua posição
Sobre a rotina EXCLUIR 
Deve exibir o dado excluído
Caso a fila esteja vazia, exibir "FILA VAZIA"
Sobre a rotina EXIBIRPRIMEIRO
Deve exibir no seguinte formato: (O número xx e o primeiro da fila)
Caso a fila esteja vazia, deve exibir: (Nenhum número inserido)
Sobre a rotina LISTAGEM (EXIBIR FILA)
Caso a fila esteja vazia exibir mensagem (Nenhum elemento inserido)
Chamar uma rotina (imprimir) para exibir todos os elementos da fila, incluindo a posição de cada
elemento
Sobre a rotina ESVAZIAR
Exibir mensagem se a fila estiver vazia (Nenhum número inserido)
Remover cada elemento enquanto existir dados.
Exibir uma mensagem (FILA ESVAZIADA)

 

Esse foi o código digitado no DEV C++, mas gostaria de ajuda para terminá-lo e deixá-lo de acordo com o solicitado acima;

 

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


void ADICIONAR();
void EXCLUIR();
void EXIBIRPRIMEIROELEMENTO();
void EXIBIRFILA();
void ESVAZIAR();


#define MAX 20 /*tamanho maximo da fila*/

typedef int telem; /*Tipo base dos elementos da fila*/

typedef struct {
    
        telem v[MAX];
        int inicio;        /* Posição do primeiro elemento*/
        int final;        /* Posição do último elemento*/
    } tfila;
    
int menu();
void criar (tfila *F);
int vazia (tfila F);
int primeiro (tfila F, telem *dado);
int inserir (tfila *F, telem *valor);
int remover (tfila *F, telem valor);


tfila NUMEROS;
int opcao;

main()
{
    
        int fim=0;
        criar (&NUMEROS);
        do
        {
        
    printf("    EDITOR DE FILA\n");
    printf("\n1 - ADICIONAR\n");
    printf("\n2 - EXCLUIR\n");
    printf("\n3 - EXIBIR PRIMEIRO ELEMENTO\n");
    printf("\n4 - EXIBIR FILA\n");
    printf("\n5 - ESVAZIAR\n");
    printf("\n6 - SAIR\n");
    printf("nDIGITE SUA OPCAO:");
    
    scanf("%d", &opcao);
    system("cls");
    
    switch (opcao)
        {
            case 1:ADICIONAR();
                break;
            case 2:EXCLUIR();
                break;
            case 3:EXIBIRPRIMEIROELEMENTO();
                break;
            case 4:EXIBIRFILA();
                break;
            case 5:ESVAZIAR();
                break;
            case 6:fim=1;
                break;
            default: printf("Opcao invalida\n");
                getch();
                
            }
    }while (!(fim));
    printf("Programa encerrado");
    getch();
}

void ADICIONAR() 
{
/*    telem num;
    system("cls");
    printf("                ADICIONAR DADOS\n");
    printf("Digite um numero inteiro: (zero para terminar):");
    scanf("%d",&num);
    while(!(num==0))
    {
    
        if (!(inserir (&NUMEROS,tamanho(NUMEROS)+1,num)))
        {
                printf("NUMERO MAXIMO DE DADOS ATINGIDO");
                getch();
                return;
        }
        printf("Digite um numero inteiro: (zero para terminar):");
        scanf("%d",&num);
    }*/
}


void EXCLUIR() 
{
/*telem num;
int posicao;
system("cls");
printf("    E X C L U I R    D A D O\n");
printf("Digite posicao de exclusao:");
scanf("%d", &posicao);
if (!(remover (&inicio, &final)))
{
    printf("FILA VAZIA");
    getch();
    return;
}
else
{
    printf("O numero %d foi excluido da lista.", num);
}
getch();*/
}

void EXIBIRPRIMEIROELEMENTO () 
{
/*    telem num;
    system("cls");
    if (elem(NUMEROS, &fila))
    {
        printf("VALOR DO INICIO: %d\n", num);
        getch();
    }
    else
    {
        printf("Nenhum numero inserido\n");
        getch();
    }*/
}

void EXIBIRFILA() 
{
/*    system ("cls");
    int i;
    if(NUMEROS.inicio == -1)
        printf("FILA VAZIA\n");
    else
    {
        printf("FILA: ");
        for(i=0; i<=NUMEROS.fila; i++)
            printf("%d ", NUMEROS.v);
        printf("\n");
    }
    getch();*/
}

void ESVAZIAR() 
{
    
    
}


void criar (tfila *F) {
    F-> inicio = 0;
    F->final = -1;
}

int vazia (tfila F) {
    return (F.inicio > F.final);
}

int primeiro (tfila F, telem *dado) {
if (vazia (F)) return 0;    /* Erro fila vazia */
*dado = F.v[F.inicio];
return (1);    
}

int inserir (tfila *F, telem *valor) {
    if (F->final == MAX-1) return 0;
    (F->final) ++;
    F->v[F->final];
    
    return(1);
}

int remover (tfila *F, telem valor) {
    if (vazia (*F)) return 0; /* Erro: fila vazia */
    
    int primeiro (tfila F, telem *dado);
    (F->inicio)++;
    
    return(1);
}
/*
void imprimir (tfila *P) {
    
}*/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×