Ir ao conteúdo
  • Cadastre-se

Problemas com filas c++


Posts recomendados

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) {
    
}*/

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...