Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida ao passar informações de uma struct para outra


Yuri Carlos

Pergunta

Olá a todos!

Eu criei um sisteminha para estudos, algo bem simples só para tirar uma dúvida, que eu já estou a um tempo.
O código a seguir é de um sistema de locação de veículos (Como o foco é meramente didático e para o código não ficar tão grande eu me atentei a apenas colocar o código de inserção de cada struct, que já foi testado e está funcionando).

Note mais abaixo que existe um método chamado `Locacao* inserir_locacao(Locacao *primeiraLocacao){` esse método deveria conter o nome do veículo e o nome do cliente já cadastrado, provavelmente terei que fazer algum tipo de busca nas struct que eu já criei, porém não tenho idéia de como fazer isso, alguém poderia me ajudar?


 

   //Livrarias do sistema
    
    #include <stdio.h>
    //#include <conio.h>
    #include <string.h>
    #include <stdlib.h>
    
    typedef struct cliente{
        unsigned long int codigo;
        char nome[50];
        struct cliente* prox;
    }Cliente;
    
    typedef struct veiculo {
        unsigned int codigo;
        char modelo[50];
        struct veiculo* prox;
    }Veiculo;
    
    typedef struct locacao {
        unsigned long int codigo;
        int codCliente;
        char nomeCliente[50];
        int cod_veiculo;
        char modelo[50];
        struct locacao* prox;
    }Locacao;
    
    //Declaracao de Funcoes
    
    //Funcoes de gerenciamento de clientes
    Cliente* inserir_cliente(Cliente* primeiro);
    
    //Funcoes de gerenciamento de veiculos
    Veiculo* inserir_veiculo(Veiculo* primeiro);
    
    //Funcoes de gerenciamento de locacao
    //Locacao* nova_locacao(Locacao* primeiro);
    
    void main(){
    
      //Declaracao de variaveis
      char opcao;
      Cliente *primeiroCliente = NULL;
      Veiculo *primeiroVeiculo = NULL;
      //Locacao *primeiraLocacao = NULL;
    
      while (opcao != 's') {
      //Menu de opcoes
    
      printf(" @----------------------------------------------------------------------------@\n");
      printf(" | ");printf("\t\t\t     SISTEMA DE LOCACAO DE VEICULOS");printf("\t\t      |\n");
      printf(" @----------------------------------------------------------------------------@\n");
      printf("\n");
      printf(" @----------------------------------------------------------------------------@\n");
      printf(" | <A> -> Inserir Cliente                                                      |\n");
      printf(" @----------------------------------------------------------------------------@\n");
      printf(" | <B> -> Inserir Veiculo                                                     |\n");
      printf(" |----------------------------------------------------------------------------|\n");
      printf(" | <C> -> Inserir Locacao                                                     |\n");
      printf(" |----------------------------------------------------------------------------|\n");
    
      //Lendo a opcao do menu
      fflush(stdin);
      opcao = getch();
    
      //Menu de opcoes
      switch (opcao)
      {
          //Nova locacao
          case 'a':
          case 'A':
            fflush(stdin);
            system("cls");
            printf(" %c----------------------------------------------------------------------------%c\n",201,187);
            printf(" | ");printf("\t\t\t          Inserir Cliente   ");printf("\t\t\t      |\n");
            printf(" %c----------------------------------------------------------------------------%c\n",200,188);
            primeiroCliente = inserir_cliente(primeiroCliente);
            getch();
            system("cls");
          break;
    
          //Alterar dados da locacao
          case 'b':
          case 'B':
            fflush(stdin);
            system("cls");
            printf(" %c----------------------------------------------------------------------------%c\n",201,187);
            printf(" | ");printf("\t\t\t          Inserir Veiculo     ");printf("\t\t\t      |\n");
            printf(" %c----------------------------------------------------------------------------%c\n",200,188);
            primeiroVeiculo = inserir_veiculo(primeiroVeiculo);
            getch();
            system("cls");
          break;
    
          //Listar locacao
          case 'c':
          case 'C':
            fflush(stdin);
            system("cls");
            printf(" %c----------------------------------------------------------------------------%c\n",201,187);
            printf(" | ");printf("\t\t\t          Inserir Locacao    ");printf("\t\t\t      |\n");
            printf(" %c----------------------------------------------------------------------------%c\n",200,188);
            //primeiraLocacao = inserir_locacao(primeiraLocacao);
            getch();
            system("cls");
          break;
          //Sair do programa
         case 's':
         case 'S':
              opcao = 's';
    
         break;
    
          //Previne a situacao de um usuario qualquer, digitar uma opcao não fornecida.
         default:
              system("cls");
         break;
    
      }
    
    }
    }
    
    //Inserir Locacao
    /*
    Locacao* inserir_locacao(Locacao *primeiraLocacao){
        Locacao locacao;
        Locacao *atual = primeiraLocacao;
        char identificador = 'F';
    }
    
    //Lendo as informacoes da locacao
    printf(" Codigo da locacao: ");
    scanf("%u", &locacao.codigo); printf("\n");
    printf("%s\n","  " );
    fflush(stdin); fgets(locacao.nome, 40, stdin); printf("\n");
    */
    
    //Inserindo veiculo
    Veiculo* inserir_veiculo(Veiculo *primeiroVeiculo){
        Veiculo veiculo;
        Veiculo *atual = primeiroVeiculo;
        char identificador = 'F' ;
    
        //Lendo as informacoes do veiculo.
        printf(" Codigo do Veiculo: ");
        scanf("%u", &veiculo.codigo); printf("\n");
        printf(" Modelo: ");
        fflush(stdin); fgets(veiculo.modelo, 40, stdin); printf("\n");
    
    
        //Verificando se o cadastro já existe.
        for(atual=primeiroVeiculo; atual!=NULL; atual=atual->prox){
            if(atual->codigo==veiculo.codigo){
                identificador = 'V';
                break;
            }
        }
    
        if(identificador!='V' && (strlen(veiculo.modelo)!=1)){
            //Alocando espacos e guardando informacoes do veiculo.
            Veiculo* NovoVeiculo=(Veiculo*) malloc(sizeof(Veiculo));
            strcpy(NovoVeiculo->modelo, veiculo.modelo);
            NovoVeiculo->codigo = veiculo.codigo;
            NovoVeiculo->prox = primeiroVeiculo;
            printf(" Cadastro realizado com sucesso.");
            printf("\n\n PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
            return NovoVeiculo;
        }else{
            printf(" Cadastro inv%clido.", 160);
            printf(" \n\n PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
            return primeiroVeiculo;
        }
    
    }
    
    //Inserindo clientes
    Cliente* inserir_cliente(Cliente *primeiroCliente){
        Cliente cliente;
        Cliente *atual = primeiroCliente;
        char identificador = 'F' ;
    
        //Lendo as informacoes do cliente.
        printf(" Codigo do cliente: ");
        scanf("%u", &cliente.codigo); printf("\n");
        printf(" Nome: ");
        fflush(stdin); fgets(cliente.nome, 40, stdin); printf("\n");
    
    
        //Verificando se o cadastro já existe.
        for(atual=primeiroCliente; atual!=NULL; atual=atual->prox){
            if(atual->codigo==cliente.codigo){
                identificador = 'V';
                break;
            }
        }
    
        if(identificador!='V' && (strlen(cliente.nome)!=1)){
            //Alocando espacos e guardando informacoes do cliente.
            Cliente* NovoCliente=(Cliente*) malloc(sizeof(Cliente));
            strcpy(NovoCliente->nome, cliente.nome);
            NovoCliente->codigo = cliente.codigo;
            NovoCliente->prox = primeiroCliente;
            printf(" Cadastro realizado com sucesso.");
            printf("\n\n PRESSIONE QUALQUER TECLA PARAVA VOLTAR AO MENU PRINCIPAL.");
            return NovoCliente;
        }else{
            printf(" Cadastro inv%clido.", 160);
            printf(" \n\n PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
            return primeiroCliente;
        }
    }

 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...