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