Ir ao conteúdo
  • Cadastre-se

C Criar Bibliotecas e Funcoes


Ir à solução Resolvido por Reberth Siqueira,

Posts recomendados

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?

 

 

 

ARQUIVOS

 

// 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;

}

 

Link para o comentário
Compartilhar em outros sites

Tem um erro nessa linha

case 3:

        //printf("\t\t\MAPA\n");
		printf("\t\tMAPA\n");

e aqui

#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);
void limparvetor(int *v1,int*v2);

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

2 minutos atrás, Reberth Siqueira disse:

@Flávio Pedroza Eu consegui resolver mais tarde esse meu problema! Eu não tinha entendido que tem que escrever todo o codigo da função no arquivo .h!

 

Agora tá resolvido!! obrigado

Não precisa, o erro era o nome da função, você escreveu errado no .h.

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!