Ir para conteúdo
  • 0
reberthkss

Criar Bibliotecas e Funcoes

Pergunta

Bom dia!

 

Eu tenho um programa escrito em C e nele estou utilizando funções, e para ter boa prática, eu quero separar as funções do programa principal.

Então to querendo criar uma header e outro arquivo .c para colocar as funções. Ai eu fico com:

 

  • Arquivo .h "Funcoes.h";
  • Arquivo .c "Funcoes.c"
  • Arquivo .c "main.c"

 

Eu tentei fazer o esquema acima, mas quando compilo o arquivo main.c o compilador me retorna um erro (Anexo I);

 

 

erro.png

Na minha opinião era pra dar certo, pois fiz igual um exemplo que eu tenho aqui (o exemplo tá em c++)...

 

o que eu to deixando passar pra não ter dado certo?

// FUNCOES.H



#pragma once

#include <stdio.h>
#include <math.h>

extern int assentoC[23];
extern int assentoJ[23];
extern float valort;


void limpavetor(int *v1,int*v2);
//FUNCOES.C

#include "funcoes.h"


void limparvetor(int *v1,int *v2){

int i;

for(i=0;i<23;i++){
    *(v1+i)=0;
    *(v2+i)=0;
}
}
//MAIN.C


#include<stdio.h>
#include<math.h>
#include <string.h>
#include "funcoes.h"


int assentoC[23];
int assentoJ[23];
float valort=0;




char* verStatusAss(int *assento)
{if(*assento>0) return "OCUPADO";
    else return "DISPONIVEL";
}


void comprar()
{
    int i;
    int opt=0;
    int qt=0;
    int ass[23];
    int confirma=0;
    int menu=0;
    int contDJ=1;
    int contDC=1;
    int destino=0;
    int cont=0;
    float valor1=28.0,valor2=159.0,valor3=188.0;



    printf("\t\t MENU\n");

    printf("Destino: [1] Sao Paulo [2] Curitiba [3] Florianopolis: ");

    scanf("%i",&destino);

    printf("\n");


    printf("voce quer comprar assentos em/ou: \n\n");

    for(i=0;i<23;i++){

    if(assentoC[i]==0){
        contDC=0;
    }

    }

    for(i=0;i<23;i++){

    if(assentoJ[i]==0){
        contDJ=0;
    }

    }

    printf("ASSENTO DISPONIVEIS EM\n");

    if(contDJ==0) printf("\n1 - Janela\n\n");


    if(contDC==0) printf("2 - Corredor\n");
    printf("\n\n\n3 - Voltar para menu principal\n");

    scanf("%i",&opt);

        switch(opt){
            case 1: printf("[JANELA] Quantos assentos?:");

                    scanf("%i",&qt);

                    printf("\n");

                    printf("[JANELA] Qual/Quais assento?: ");

                    for(i=0;i<qt;i++){
                        cont=0;
                            while(cont<1){

                    printf("[JANELA] Bilhete: %i. Assento: ",i+1);
                    scanf("%i",&ass[i]);
                    printf("\n");

                    if(assentoJ[ass[i]]!=0){
                        printf("Assento OCUPADO. Escolha outro assento! ");

                    }else
                    {
                        cont++;
                    }

                    }

                    }

                    printf("\t\t     RESUMO\n");
                    printf("Posicao: JANELA \n");
                    for(i=0;i<qt;i++){
                    printf("Bilhete: %i.\t Assento: %i\n",i+1,ass[i]);
                    }

                    printf("CONFIRMA?? ");
                    printf("[1] SIM [0] NAO:");
                    scanf("%i",&confirma);


                    if(confirma!=0){
                        for(i=0;i<qt;i++)
                        {

                            assentoJ[ass[i]]=1;

                            switch(destino)
                            {
                                case 1: valort=valort+(qt*valor1);
                                break;
                                case 2: valort=valort+(qt*valor2);
                                break;
                                case 3: valort=valort+(qt*valor3);
                                break;
                            }


                        }
                    }
                    else
                    {
                        printf("VENDA NAO EFETUADA! VOLTANDO AO MENU PRINCIPAL...");

                    }
            break;
            case 2: printf("[CORREDOR] Quantos assentos?:");
                    scanf("%i",&qt);
                    printf("\n");
                    printf("[CORREDOR] Qual/Quais assento?: ");
                    for(i=0;i<qt;i++){
                    printf("[CORREDOR] Bilhete: %i. Assento: ",i+1);
                    scanf("%i",&ass[i]);
                    printf("\n");
                    }

                    printf("\t\t     RESUMO\n");
                    printf("Posicao: CORREDOR \n");
                    for(i=0;i<qt;i++){
                    printf("Bilhete: %i.\t Assento: %i\n",i+1,ass[i]);
                    }

                    printf("CONFIRMA?? ");
                    printf("[1] SIM [0] NAO:");
                    scanf("%i",&confirma);


                    if(confirma!=0){
                        for(i=0;i<qt;i++)
                        {
                            assentoJ[ass[i]]=1;
                        }
                    }
                    else
                    {
                        printf("VENDA NAO EFETUADA! VOLTANDO AO MENU PRINCIPAL...");

                    }
            break;
            case 3:


            break;
    }
    }


int menuprincipal()
{

    int opt=0;
    printf("\t\t     MENU PRINCIPAL\n\n");
    printf("\t\t 1 - COMPRAR ASSENTO\n");
    printf("\t\t 2 - VERIFICAR ASSENTOS\n");
    printf("\t\t 3 - VER MAPA DO TRAJETO\n");
    printf("\t\t 4 - VER LUCRO\n");
    printf("\t\t 5 - SAIR\n");

    printf("\t\t Digite uma opcao: ");
    scanf("%i",&opt);

    return opt;

}


int menusecundario()
{

    int opt=0;

    printf("1 - COMPRAR ASSENTO // ");
    printf("2 - VERIFICAR ASSENTOS \n");
    printf("3 - VER MAPA DO TRAJETO // ");
    printf("4 - VER LUCRO // ");
    printf("5 - VOLTAR PARA MENU PRINCIPAL\n");
    printf("6 - SAIR \n");

    printf("Digite uma opcao: ");
    scanf("%i",&opt);

    return opt;

}


void verAss()
{
    int i;
    int opt=0;

    printf("\t\t MENU\n");
    printf("voce quer ver assentos em/ou: \n");
    printf("1 - Janela\n");
    printf("2 - Corredor\n");
    printf("3 - Todos\n");
    printf("Digite uma opcao: ");
    scanf("%i",&opt);

    printf("\n");

    for(i=0;i<23;i++)
    {
        switch(opt){
            case 1: printf("[JANELA] Assento %i. STATUS: %s \n",i, verStatusAss(&assentoJ[i]));
            break;
            case 2: printf("[CORREDOR] Assento %i. STATUS: %s \n",i,verStatusAss(&assentoC[i]));
            break;
            case 3: printf("[JANELA] Assento %i. STATUS: %s \t [CORREDOR] Assento %i. STATUS: %s\n",i,verStatusAss(&assentoJ[i]),i,verStatusAss(&assentoC[i]));
            break;
    }
    }
}

int voltarMenuP(int *menu)
{
    int menu2;
    printf("APERTE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL");

        scanf("%i",&menu2);

        if(menu2!=0) *menu=1;

        return menu;
}

int acao(int opt,int * gameover)
{
    int menu=0;

while(!menu){
    switch(opt){
    case 1:
        comprar();
        voltarMenuP(&menu);
        break;
        // VERIFICAR ASSENTOS
    case 2:

        verAss();

        voltarMenuP(&menu);

        break;
        // verMap()
    case 3:

        printf("\t\t\MAPA\n");
        printf("SJC\t->\t Sao Paulo\t->\t Curitiba\t->\t Florianopolis\n");

        voltarMenuP(&menu);

        break;
        // verLuc()
    case 4:

        printf("Valor total: %.2f\n",valort);

        voltarMenuP(&menu);

        break;
        // exit()
    case 5:
            *gameover=1;
            return *gameover;
        break;
    }
}
}



int main(){

int gameover=0;
int opt;
int i=0;

    limparvetor(&assentoC,&assentoJ);

while(!gameover){
// MENU PRINCIPAL
// -- func menuprincipal()
acao(opt=menuprincipal(),&gameover);
}

return 0;

}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

0 respostas a esta questão

Recommended Posts

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por biza
      Ola
      Estou  a construir um datalogger em código C.Desta forma necessito passar os dados entre ficheiros. O meu problema está na inclusão de algumas variáveis no topo de um arquivo .txt onde os dados são salvos. Variáveis como tempo de data e hora, id do dispositivo e muito mais... Para isso preciso de ajuda, gostaria que os dados estivessem disponíveis para todos os arquivos, até aí é fácil, basta incluir a variável como extern, no arquivos *.h e incluí-lo em todos os outros que você deseja que a variável esteja disponível. mas como posso fazer para ter acesso a ele dentro do array que preciso?
      Exemplo: main.c
      #include "main.h" char dateTimeFormat[24]; void main(void){ dateTimeFormat = "22-02-22 13:23:04"; } main.h
      extern char dateTimeFormat[24];  
      teste.c
       
      #include "main.h" extern char dateTimeFormat[24]; /*Header .txt file initialization*/ volatile char headerFile[] ="\n\n" "# HEALT MONITORING SYSTEM \r\n" "# DEVELOPED: BIZA \r\n" "# VERSION: B \r\n" "# DATATIMECAPTURE:"+dateTimeFormat+ "\r\n" "# SAMPLINGFREQUENCY: 500 \r\n" "# SAMPLECHANNELS: 1 2 3 4 5 6 7 8 \r\n" "# SAMPLINGRESULUTION: 24 \r\n" "# IDDEVICE: HEALTHY \r\n" "# ENDOFHEADER  
      Como posso incluir a variável "dateTimeFormat" dentro do headerFile como descrevi acima?
       
    • Por Mauricio Molina
      Ola pessoal, será que podem me dar uma força?
       
      Preciso fazer um calculo de subtração de valores, onde o administrador seleciona o mes, pego pelo ID, método GET, para edição.
       
      Como normalmente tem vários meses pagos, o script a seguir só esta funcionando no primeiro item da tabela.
       
      Como posso fazer para funcionar em todos os itens da tabela?
       
      Teria que dar um nome diferente no getValor (id no HTML) para cada um, mas como posso fazer isso?
       
      <!-- Calculo Devolucao--> <script type="text/javascript"> function id(valor_campo) { return document.getElementById(valor_campo); } function getValor(valor_campo) { var valor = document.getElementById(valor_campo).value.replace(',', '.'); /*document.write("Valor: " - valor);*/ return parseFloat( valor ) * 1; } function sub() { var total = getValor('v_recebido') - (getValor('v_devolvido')); id('resultadoDev').value = (total * 1) .toFixed(2, "."); } </script> <!-- Calculo Devolucao--> <div class="toggle"> <input name="v_devolvido" type="checkbox" id="foo<?php echo $rows_aluno['id']; ?>" value="<?php echo $rows_aluno['v_recebido']; ?>"> <label for="foo<?php echo $rows_aluno['id']; ?>"></label> </div> <input type="text" id="v_recebido" value="<?php echo $rows_aluno['v_recebido']; ?><?php echo $rows_aluno['v_receb_parc']; ?>" onblur="sub()" > <div class="form-row"> <div class="form-group col-md-6"> <label for="validationCustomUsername">Valor Parcial:</label> <div class="input-group"> <div class="input-group-prepend"> <span class="input-group-text" id="inputGroupPrepend">R$</span> </div> <input name="v_dev_parc" type="text" class="form-control" id="v_devolvido" placeholder="Digite o Valor" aria-describedby="inputGroupPrepend" onblur="sub()"> </div> </div> <input name="id_user" type="hidden" value="<?php echo $rows_aluno['id_user']; ?>"> <input name="id_prof" type="hidden" value="<?php echo $rows_aluno['id_prof']; ?>"> <input name="status" type="hidden" value="Devolvido"> <input name="mes" type="hidden" value="<?php echo $rows_aluno['mes']; ?>"> <input name="v_recebido" type="text" id="resultadoDev"> </div>  
    • Por oromotoceu
      #include <stdio.h>
      #include <stdlib.h>
      #define MAXTAM 1000
      int Frente, Tras, Lista[MAXTAM];
      void Lista_Construtor(){
      Frente=0;
      Tras=-1;
      }
      int Lista_Vazia(){
      if(Tras==-1)
      return 1;
      else
      return 0;
      }
      int Lista_Cheia(){
      if(Tras==MAXTAM-1)
      return 1;
      else
      return 0;
      }
      int Lista_Tamanho(){
      return Tras+1;
      }
      int Lista_Inserir_Inicio(int Valor){
      if(Lista_Cheia()){
      return 0;
      }else{
      /*se quero inserir na posição 0,
      vou deslocar todos os elementos para frente*/
      for(int i=Tras+1;i>Frente;i--){
      Lista=Lista[i-1];
      }
      Lista[Frente]=Valor;
      Tras++;
      return 1;
        }
      }
      int Lista_Inserir_Fim(int Valor){
      if(Lista_Cheia()){
      return 0;
      }else{
      Tras++;
      Lista[Tras]=Valor;
      return 1;
        }
      }
      int Lista_Inserir(int Valor, int Posicao){
      if(Lista_Cheia()){
      return 0;
      }else{
      /* Para verificar se a posição
      está no meio da lista */
      if(Posicao>Frente && Posicao<Tras){
      for(int i=Tras+1;i>Posicao;i--){
      Lista=Lista[i-1];
      }
      Lista[Posicao]=Valor;
      Tras++;
      return 1;
      }else{ 
      return 0;
         }
        }
      }
      int Lista_Remover_Inicio(int *Valor){
      if(Lista_Vazia()){
      return 0;
      }else{
      *Valor =Lista[Frente];
      for(int i=Frente;i<Tras;i++){
      Lista=Lista[i+1];
         }
      Tras--;
        }
      }
      int Lista_Remover_Fim(int *Valor){
      if(Lista_Vazia()){
      return 0;
      }else{
      *Valor=Lista[Tras];
      Tras--;
      return 1;
        }
      }
      int Lista_Remover(int *Valor, int Posicao){
      if(Lista_Vazia()){
      return 0;
      }else{
      if(Posicao>Frente && Posicao<Tras){
      *Valor=Lista[Posicao];
      for(int i=Posicao;i<Tras;i++){
      Lista=Lista[i+1];
      }
      Tras--;
      return 1;
         }
        }
      }
      int Lista_Get_toda(int *Valor){
      if(Lista_Vazia()){
      return 0;
      }else{
      *Valor=Lista[Frente];
      return 1;
        }
      }
      int Lista_Get_inicio(int *Valor){
      if(Lista_Vazia()){
      return 0;
      }else{
      *Valor=Lista[Frente];
      return 1;
        }
      }
      int Lista_Get_Fim(int *Valor){
      if(Lista_Vazia()){
      return 0;
      }else{
      *Valor=Lista[Tras];
      return 1;
        }
      }
      int Lista_Busca_Valor(int Valor, int *Posicao){
      int i;
      if(Lista_Vazia()){
      return 0;
      }else{
      for(i=Frente;i<Tras;i++){
      if(Lista==Valor){
      break;
        }
      }
      if(i==Tras){
      return 0;
      }else{
      *Posicao=i; 
      return 1;
         }
        }
      }
      int Lista_Busca_Posicao(int *Valor, int Posicao){
      if(Lista_Vazia()){
      return 0;
      }else{
      if(Posicao>Frente && Posicao<Tras){
      *Valor=Lista[Posicao];
      return 1;
      }else{
      return 0;
         }
        }
      }
      int main(){
      int i,Valor,op=0,pos;
      Lista_Construtor();
      while(op!=12){
      printf("*** Menu de opções ***\n");
      printf("1-Inserir início\n");
      printf("2-Inserir fim\n");
      printf("3-Inserir meio\n");
      printf("4-Excluir início\n");
      printf("5-Excluir fim\n");
      printf("6-Excluir meio\n");
      printf("7-Mostrar toda lista\n");
      printf("8-Mostrar primeiro item da lista\n");
      printf("9-Mostrar último item da lista\n");
      printf("10-Mostrar a posição de um item da lista\n");
      printf("11-Mostrar o valor de uma posição\n");
      printf("12-Sair\n");
      printf("Escolha uma opção: ");
      scanf("%d", &op);
      switch(op){
          case 1:
              printf("Digite o valor a ser inserido: ");
              scanf("%d", &Valor);
              Lista_Inserir_Inicio(Valor);
              break;
          case 2:
              printf("Digite o valor a ser inserido: ");
              scanf("%d", &Valor);
              Lista_Inserir_fim(Valor);
              break;
            case 3:
              printf("Digite o valor a ser inserido: ");
              scanf("%d", &Valor);
              printf("Digite a posição que deseja inserir: ");
              scanf("%d", &pos);
              Lista_ Inserir_meio(int Valor, pos); 
              break;
            case 4:
              printf("Digite a remoção do início: ");
              scanf("%d", &*Valor);
              Lista_ Excluir_inicio(*Valor); 
              break;
              case 5:
              printf("Digite a remoção do fim: ");
              scanf("%d", &*Valor);
              Lista_ Excluir_fim(*Valor); 
              break;
              case 6:
              printf("Digite a remoção do meio: ");
              scanf("%d", &Valor);
              printf("Digite a posição que deseja remover: ");
              scanf("%d", &*Posicao);
              Lista_ Excluir_meio(intValor, * pos); 
              break;
               case 7:
              printf("Digite ao a mostrar toda lista: ");
              scanf("%d", &Valor);
              Lista_ mostrar_toda_lista(Valor);
              break;
             case 8:
              printf("Digite ao a mostrar primeiro item da lista: ");
              scanf("%d", &*Valor);
              Lista_ mostrar_primeiro_item_da_lista(*Valor);
              break;
             case 9:
              printf("Digite ao a mostrar último item da lista: ");
              scanf("%d", &*Valor);
              Lista_ mostrar_ultimo_item_da_lista(*Valor);
              break;
              case 10:
              printf("Digite ao a mostrar a posição de um item da lista: ");
              scanf("%d", &Valor);
              printf("Digite a posição que deseja mostrar na lista: ");
              scanf("%d", &* pos);
              Lista_ mostrar_posicao_de_um_item_da_lista(intValor, *pos);
              break;
              case 11:
              printf("Digite ao a mostrar o valor de uma posição: ");
              scanf("%d", &*Valor
              printf("Digite a posição que deseja mostrar no valor: ");
              scanf("%d", &pos);
              Lista_ mostrar_posicao_de_um_valor_da_lista(int*Valor, pos);
              break;
              case 12:
              default:
              printf("Valor Invalido!\n");
              system("PAUSE");
               }
         }
       return 0;
      }
    • Por oromotoceu
      bom dia pode me ajudar nessa questão por favor
      O programa deverá trabalhar dados de um veículo, onde será armazenado, Nome do proprietário, placa do carro, modelo do carro e preço do carro.
      O programa deve ter as seguintes opções:
      Inserir dados (todos os dados sugeridos no enunciado acima).
      Excluir um Carro específico com a busca pela placa.
      Editar dados de um Carro com a busca pela placa.
      Consultar carro por Placa.
      Exibir todos os dados cadastrados.
      Finalizar programa.
      A opção exibir todos os dados, apresenta tudo que já foi cadastrado e está na memória.
       
    • Por TK_T
      olá sou iniciante consegui fazer um o código de um exercício só que quando eu peço o valor 12ab ele lê como numérica alguém pode me ajudar? 
      Exercício: Leia uma string e diga se a mesma é numérica (na base decimal) ou não.
      Ex.: "123" -> numérica
      "abc" -> não numérica
      "12ab" -> não numérica
      "12.34" -> numérica 
      #include <stdio.h> int main() { char Numero; printf("Digite Algo: "); scanf("%c", &Numero); if(Numero == '1' || Numero == '2' || Numero == '3' || Numero == '4' || Numero == '5' || Numero == '6' || Numero == '7' || Numero == '8' || Numero== '9' || Numero == '0') printf("\tNumérica...\n"); else printf("\tNão Numérica\n"); return 0; }  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.