Ir ao conteúdo
  • Cadastre-se

ThunderBoolt

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

0
  1. Estou com um problema num programa Em C de fila, onde tenho que adicionar algumas caracteristicas de carros e depois exibi-las. O programa executa, só que quando é pedido para adicionar um carro, diz que a fila esta cheia, mas quando pede-se para remover ou para exibir a fila, diz que a fila esta vazia. Tentei tudo o que conheço, mas não consegui arrumar o erro, por favor, me ajudem Segue abaixo o código do programa: #include<stdio.h> #include<stdlib.h> #include <windows.h> #define max 50 #define str 20 #define vet 100 struct Fila { int capacidade; float *dados; int primeiro; int ultimo; int nItens; }; typedef struct type_car{ long int codigo[vet]; char modelo[vet][str]; char marca[vet][str]; char cor[vet][str]; }car; int i; void criarFila( struct Fila *f, int c ) { f->capacidade = c; f->dados = (float*) malloc (f->capacidade * sizeof(float)); f->primeiro = 0; f->ultimo = -1; f->nItens = 0; } void inserir(struct Fila *f, int v){ if(f->ultimo == f->capacidade-1) f->ultimo = -1; f->ultimo++; f->dados[f->ultimo] = v; f->nItens++; } int remover( struct Fila *f ){ int temp = f->dados[f->primeiro++]; if(f->primeiro == f->capacidade) f->primeiro = 0; f->nItens--; return temp; } int estaVazia( struct Fila *f ){ return (f->nItens==0); } int estaCheia( struct Fila *f ){ return (f->nItens == f->capacidade); } void mostrarFila(struct Fila *f){ int cont, i; for ( cont=0, i= f->primeiro; cont < f->nItens; cont++) { printf("%.2f\t",f->dados[i++]); if (i == f->capacidade) i=0; } printf("\n\n"); } int main(){ car carro; int opcao, capa; float valor; struct Fila umaFila; criarFila(&umaFila, capa); while( 1 ){ printf("\n1 - Adicionar carro a Fila"); printf("\n2 - Retirar carro da Fila"); printf("\n3 - Mostrar Status da Fila"); printf("\n0 - Sair do programa"); printf("\n\nOpcao: "); scanf("%d", &opcao); system("cls"); switch(opcao) { case 0: exit(0); case 1: if (estaCheia(&umaFila)) { printf("\nFila Cheia!!!\n\n"); } else{ printf("\nDigite o codigo do carro: "); scanf("%f", &valor); scanf("%d",&carro.codigo); inserir(&umaFila,valor); printf("\nDigite o modelo do carro:"); scanf("%s",&carro.modelo); printf("\nDigite a marca do carro:"); scanf("%s",&carro.marca); printf("\nDigite a cor do veiculo: "); scanf("%s",&carro.cor); } break; case 2: if (estaVazia(&umaFila)) { printf("\nFila vazia!!!\n\n"); }else{ valor = remover(&umaFila); printf("\n%1f veiculo removido com sucesso\n\n", valor) ; } break; case 3: if (estaVazia(&umaFila)){ printf("\nFila vazia!!!\n\n"); } else{ printf("\nCodigo dos carros => "); mostrarFila(&umaFila); } break; default: printf("\nOpcao Invalida\n\n"); } } getchar(); } void exibedados(car info) { printf("\nCodigo do carro: %d",info.cor); fflush(stdin); printf("\n Modelo do carro: %s",info.modelo); fflush(stdin); printf("\n Marca do carro: %s",info.marca); fflush(stdin); printf("\n Cor do carro: %s",info.cor); fflush(stdin); }

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