Ir para conteúdo
Fórum Script Brasil

VitorPizzuto

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre VitorPizzuto

VitorPizzuto's Achievements

0

Reputação

  1. Pessoal, preciso de uma ajudinha de vocês :/ Estou fazendo um programinha em C, no qual o usuário insere as informações do veículo, como: código, modelo e marca. Depois de inserir os dados, ao digitar a opção para se exibir os veículos na fila, o código sai certo, porém as informações armazenadas na fila saem zeradas, o que será que está acontecendo? Aqui está o source code: #include<stdio.h> #include<stdlib.h> #include <locale.h> typedef struct type_car{ int cod; char marca[20]; char modelo[20]; char cor[20]; }car; car carro; typedef struct Node{ int num; struct Node *prox; }node; int tam; int menu(void); void opcao(node *FILA, int op); void inicia(node *FILA); int vazia(node *FILA); node *aloca(); void insere(node *FILA); node *retira(node *FILA); void exibe(node *FILA); void libera(node *FILA); int main(void){ node *FILA = (node *) malloc(sizeof(node)); if(!FILA){ printf("Sem memoria disponivel!\n"); exit(1); }else{ inicia(FILA); int opt; do{ opt=menu(); opcao(FILA,opt); }while(opt); free(FILA); return 0; } } int menu(void){ setlocale(LC_ALL, "Portuguese"); int choose; printf("\n\t\t\t\tEscolha a opção\n"); printf("1 - Remover todos os carros\n"); printf("2 - Exibir todos os carros na fila\n"); printf("3 - Adicionar carro a fila\n"); printf("4 - Remover carro da fila\n"); printf("0 - Sair do programa\n"); printf("\nOpção: "); scanf("%d", &choose); system("cls"); return choose; } void opcao(node *FILA, int op){ node *tmp; switch(op){ case 0: libera(FILA); break; case 1: libera(FILA); inicia(FILA); break; case 2: exibe(FILA); break; case 3: insere(FILA); break; case 4: tmp= retira(FILA); if(tmp != NULL){ printf("Carro removido: %3d\n\n", tmp->num); libera(tmp); } break; default: printf("Comando invalido!\n\n"); } } void inicia(node *FILA){ FILA->prox = NULL; tam=0; } int vazia(node *FILA){ if(FILA->prox == NULL) return 1; else return 0; } node *aloca(){ node *novo=(node *) malloc(sizeof(node)); if(!novo){ printf("Sem memória disponivel!\n"); exit(1); }else{ printf("Código do carro: "); scanf("%d", &carro.cod); fflush(stdin); printf("Modelo do carro: "); scanf("%s", &carro.modelo); fflush(stdin); printf("Marca do carro: "); scanf("%s", &carro.marca); fflush(stdin); printf("Cor do carro: "); scanf("%s", &carro.cor); fflush(stdin); return novo; } } void insere(node *FILA){ node *novo=aloca(); novo->prox = NULL; if(vazia(FILA)) FILA->prox=novo; else{ node *tmp = FILA->prox; while(tmp->prox != NULL) tmp = tmp->prox; tmp->prox = novo; } tam++; } node *retira(node *FILA){ if(FILA->prox == NULL){ printf("Não a carros em espera!\n"); return NULL; }else{ node *tmp = FILA->prox; FILA->prox = tmp->prox; tam--; return tmp; } } void exibe(node *FILA){ if(vazia(FILA)){ printf("Sem carros!\n\n"); return ; } node *tmp; tmp = FILA->prox; printf("Fila :"); while( tmp != NULL){ printf("%5d", tmp->num); tmp = tmp->prox; } printf("\n "); int count; for(count=0 ; count < tam ; count++) printf(" ^ "); printf("\nOrdem:"); for(count=0 ; count < tam ; count++) printf("%5d", count+1); printf("\n\n"); } void libera(node *FILA){ if(!vazia(FILA)){ node *proxNode, *atual; atual = FILA->prox; while(atual != NULL){ proxNode = atual->prox; free(atual); atual = proxNode; } } } Alguém poderia me explicar o que fiz de errado e uma possível solução :)
×
×
  • Criar Novo...