Ir ao conteúdo
  • Cadastre-se

ThunderBoolt

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

posts postados por ThunderBoolt

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!