Ir ao conteúdo
  • Cadastre-se
jeffinhobhx

Duvida Fila- Valor sempre em NULL

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");

    

    }

    }

}

 

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





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

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!