Ir ao conteúdo
  • Cadastre-se

Duvida Fila- Valor sempre em NULL


jeffinhobhx

Posts recomendados

Bom dia,

 

Este codigo a abaixo esta funcionando certo, mas quando mando imprimir so aparece o valor NULL. 

Poderiam me ajudar?

Abraço.

 

#include <cstdlib>

#include <iostream>

 

using namespace std;

 

 

struct Fila {

 

char *dados;

int primeiro;

int ultimo;

int soma;

int nItens; 

 

};

 

void criarFila( struct Fila *f) { 

 

f->dados = (char*) malloc (sizeof(char));

f->primeiro = 0;

f->ultimo = -1;

f->nItens = 0;

}

 

void inserir(struct Fila *f, char &valor) {

    

    if(f->ultimo == f->nItens)

f->ultimo = -1;

     

    f->ultimo++;

f->dados[f->ultimo] = valor; // incrementa ultimo e insere

f->nItens++; // mais um item inserido

}

 

int remover( struct Fila *f ) { // pega o item do começo da fila

 

char temp = f->dados[f->primeiro++]; // pega o valor e incrementa o primeiro

 

if(f->primeiro == f->ultimo)

f->primeiro = 0;

 

f->nItens--;  // um item retirado

return temp;

 

}

 

int estaVazia( struct Fila *f ) { // retorna verdadeiro se a fila está vazia

 

return (f->nItens==0);

 

}

 

void mostrarFila(struct Fila *f){

int cont, i, a;

for ( cont=0, a=1, i= f->primeiro; cont < f->nItens; cont++){

    cout << "Codigo: " << a;

    printf(" %s",f->dados[i++]);

    cout << " || ";

    a++;

if (i == f->nItens)

i=0;

    }

printf("%d %d %d %d\n\n", f->primeiro, f->ultimo, f->nItens, f->dados[f->ultimo]);

system("pause");

printf("\n\n");

}

 

int main (int argc, char *argv[]) {

 

int opcao, cor = 0;

char valor[50];

struct Fila umaFila;

 

//Criando a Fila.

criarFila(&umaFila);

 

// apresenta menu

    while( 1 ){

    

    cout << "\n1 - Inserir elemento\n2 - Remover elemento\n3 - Mostrar Fila\n0 - Sair\n\nOpcao? ";

    scanf("%d",&opcao);

   

    switch(opcao){

    

    case 0: exit(0);

    

    case 1: // insere elemento

   

    printf("\nValor do elemento a ser inserido? ");

    scanf("%s",&valor);

    inserir(&umaFila,valor[50]);    

                                               

    break;

    

    case 2: // remove elemento

    if (estaVazia(&umaFila)){

    

    printf("\nFila vazia!!!\n\n");

    }

    else {

    

    valor[50] = remover(&umaFila);

    printf("\n%s removido com sucesso\n\n", valor);

                        if(cor == 0){

                        cout << "Cor: Vermelha" << endl ;

                        cor = 1;

                        } else {

                               if(cor == 1){

                               cout << "Cor: Azul" << endl ;

                               cor = 2;

                               } else {

                                      if(cor == 2){

                                      cout << "Cor: Amarela" << endl ;

                                      cor = 0;

                                      }

                                      }

                                      }       

                     }

    break;

    

    case 3: // mostrar fila

   

    if (estaVazia(&umaFila)){

    printf("\nFila vazia!!!\n\n");

    }

    else {

    printf("\nConteudo da fila => ");

    mostrarFila(&umaFila);

    }

    break;

    

    default:

    printf("\nOpcao Invalida\n\n");

    

    }

    }

}

 

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...