none
Ajudem Linguagem C - Pilha e Filas

    Question

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

    Tuesday, May 21, 2013 7:18 PM

All replies

  • Ninguém???
    Wednesday, May 22, 2013 3:19 PM
  • 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!
    Friday, May 24, 2013 1:58 AM
  • 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.

    Friday, May 24, 2013 12:24 PM
  • 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;
    }

    Saturday, May 25, 2013 8:46 PM