none
Ajudem Linguagem C - Pilha e Filas RRS feed

  • Pergunta

  • Ola galera, estou com uma dúvida em Pilhas e Filas - Linguagem C

    Eu não estou conseguindo cadastrar nem imprimir os veículos cadastrados.

    Segue abaixo o que eu fiz até agora:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <malloc.h> 
    
    /* DETALHES
    
          PUSH -> INSERIR
          POP -> REMOVER
    
          */
    
    typedef struct nos
    {
        char modelo[40];
        char cor[40];
        char chapa [40];
        char porte[40];
    
        struct nos *prox;
    
    }no;
    
    no *topo = NULL;
    
    // INSERE 1 ELEMENTO EM UMA PILHA
    
    void push(no **veiculos)
    {
        no *aux;
        aux = (no *)malloc(sizeof(no));
    
        
        strcpy(aux->modelo);
        strcpy(aux->cor);
        strcpy(aux->chapa);
        strcpy(aux->porte);
    
    
    
        aux->prox=NULL;
    
        if((*veiculos) != NULL)
        {
            aux->prox = *veiculos;
        }
    
        (*veiculos = aux);
    
    }
    
    // REMOE 1 ELEMENTO DE UMA PILHA
    
    int pop(no **topoAux)
    {
        no *aux, *aux2;
        aux = (*topoAux);
        (*topoAux) = (*topoAux)->prox;
        aux2 = aux->modelo;
        aux2 = aux->cor;
        aux2 = aux->chapa;
        aux2 = aux->porte;
    
        free(aux);
    
        return(aux2);
    }
    
    void imprimir(no **veiculos)
    {
        no *aux;
    
        aux = (*veiculos);
    
        while(aux != NULL)
        {
            printf("Modelo: %s", aux->modelo);
            printf("Cor: %s", aux->cor);
            printf("Placa: %s", aux->chapa);
            printf("Porde do Veiculo: %s", aux->porte);
    
            printf("\n");
        }
    
    
    }
    
    int main()
    {
        int  opcao, quantidadePequeno = 25, quantidadeGrande = 15, pareDo = 0;
        no *veiculos;
        char modelo[40];
        char cor[40];
        char chapa [40];
        char porte[40];
    
    
        do
        {
            printf("\n");
            printf(" \n   ---------------------------- MENU PRINCIPAL ----------------------------- \n");
            printf(" \n   ######################################################################### \n");
            printf(" \n   ### (1) Entrada de Veiculos        (2) Saida de Veiculos              ### \n");
            printf(" \n   ### (3) Pesquisa de Veiculos       (4) Sair                           ### \n");
            printf(" \n   ###			              				    ### \n");
            printf(" \n   ###                                                          	    ### \n");
            printf(" \n   ######################################################################### \n");
    
            fflush (stdout);
            printf("\n ");
            printf("  DIGITE A OPCAO DESEJADA: ");
            scanf  ("%d", &opcao);
            fflush (stdin);
    
            printf("\n");
            printf("\n");
    
             switch(opcao)
               {
                   case 1:
    
                            printf("CADASTRO DE VEICULO");
                            printf("\n");
                            printf("\n");
    
                            printf(" Porte do Veiculo: ");
                            gets(porte);
                            fflush(stdout);
    
                            printf("\n");
    
                            printf(" Modelo: ");
                            gets(modelo);
                            fflush(stdout);
    
                            printf("\n");
    
                            printf(" Cor do Veiculo: ");
                            gets(cor);
                            fflush(stdout);
    
                            printf("\n");
    
                            printf(" Placa do Veiculo: ");
                            gets(chapa);
                            fflush(stdout);
    
                            push()
                            break;
    
                    case 2:
    
                            break;
               }
    
        }while(opcao!=4);
    
        return 0;
    }

    Quero saber o que eu fiz de errado.

    No case 1 eu estou cadastrando as informações do meu veiculo.

    Quando eu termino de cadastrar tudo e todas as infos estão nas variáveis, como eu faço para chamar a minha função push (insere elemento) e passar todas as informações das variáveis pra ela ?

    Por favor me ajudem galera.

    terça-feira, 21 de maio de 2013 19:18

Todas as Respostas

  • Ninguém???
    quarta-feira, 22 de maio de 2013 15:19
  • Blz! Você está armazenando certinho mas nos vetores locais no seu main () {modelo..., você deve armazenar os valores no seu no *veiculos substituindo seus vetores por veiculos->modelo, veiculo-> cor, etc. Depois você passa o seu ponteiro veiculos para a sua função push(veiculos) e ai dentro dela você terá acesso aos dados usando veiculos->modelo, veiculos-> cor, etc. Boa sorte!
    sexta-feira, 24 de maio de 2013 01:58
  • Ola André, muito obrigado pela atenção.

    Onde devo mexer, na Main() apenas?

    Poderia me dar um único exemplo como realizar isso que você disse acima?

    Valew.

    sexta-feira, 24 de maio de 2013 12:24
  • Porque não está imprimindo?

    Segue meu código abaixo:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <malloc.h>
    /* DETALHES
    PUSH -> INSERIR
    POP -> REMOVER
    */
    typedef struct nos
    {
    char modelo[40];
    char cor[40];
    char chapa [40];
    char porte[40];
    struct nos *prox;
    }no;
    no *topo = NULL;
    // INSERE 1 ELEMENTO EM UMA PILHA
    void push(no **veiculos)
    {
    no *aux;
    aux = (no *)malloc(sizeof(no));
    aux = aux->modelo;
    aux = aux->cor;
    aux = aux->chapa;
    aux = aux->porte;
    aux->prox=NULL;
    if((*veiculos) != NULL)
    {
    aux->prox = *veiculos;
    }
    (*veiculos = aux);
    }
    // REMOvE 1 ELEMENTO DE UMA PILHA
    int pop(no **topoAux)
    {
    no *aux, *aux2;
    aux = (*topoAux);
    (*topoAux) = (*topoAux)->prox;
    aux2 = aux->modelo;
    aux2 = aux->cor;
    aux2 = aux->chapa;
    aux2 = aux->porte;
    free(aux);
    return(aux2);
    }
    void imprimir(no **veiculo)
    {
    no *aux;
    aux = (no *)malloc(sizeof(no));
    aux = (*veiculo);
    if(aux==NULL)
    {
    printf("Vazia!");
    fflush(stdout);
    }
    while(aux != NULL)
    {
    printf("Modelo: %s", aux->modelo);
    printf("Cor: %s", aux->cor);
    printf("Placa: %s", aux->chapa);
    printf("Porde do Veiculo: %s", aux->porte);
    printf("\n");
    aux = aux->prox;
    }
    }
    int main()
    {
    int opcao;
    no *veiculos;
    char modelo[40];
    char cor[40];
    char chapa [40];
    char porte[40];
    do
    {
    printf("\n");
    printf(" \n ---------------------------- MENU PRINCIPAL ------------------");
    printf(" \n ################################################################");
    printf(" \n ### (1) Entrada de Veiculos (2) Saida de Veiculos ###");
    printf(" \n ### (3) Pesquisa de Veiculos (4) Sair ###");
    printf(" \n ################################################################");
    fflush (stdout);
    printf("\n ");
    printf(" DIGITE A OPCAO DESEJADA: ");
    scanf ("%d", &opcao);
    fflush (stdin);
    printf("\n");
    printf("\n");
    switch(opcao)
    {
    case 1:
    printf("CADASTRO DE VEICULO");
    printf("\n");
    printf("\n");
    printf(" Porte do Veiculo: ");
    gets(veiculos->porte);
    fflush(stdout);
    printf("\n");
    printf(" Modelo: ");
    gets(veiculos->modelo);
    fflush(stdout);
    printf("\n");
    printf(" Cor do Veiculo: ");
    gets(veiculos->cor);
    fflush(stdout);
    printf("\n");
    printf(" Placa do Veiculo: ");
    gets(veiculos->chapa);
    fflush(stdout);
    push(veiculos);
    break;
    case 2:
    imprimir(veiculos);
    break;
    }
    }while(opcao!=4);
    return 0;
    }

    sábado, 25 de maio de 2013 20:46