Ir para conteúdo
Fórum Script Brasil

dark_max

Membros
  • Total de itens

    4
  • Registro em

  • Última visita

Tudo que dark_max postou

  1. dark_max

    Criar biblioteca

    Galera é o seguinte... eu uso o Dev-C++ 4.9.9.2 e quando eu ia criar algum programa, só abria um novo arquivo e começava a escrever o código. Todo o programa ficava em um único arquivo, constantes, macros, declarações e definições de funções. Tá... isso não me atrapalhava, porque eu só fazia programas pequenos, mas recentemente estou fazendo um programa que terá algumas milhares de linhas e fazer tudo em um único arquivo é um trabalho ABSURDO! Lendo coisas picadas na internet eu vi que a galera cria projetos (não sei como funciona direito)... O que eu estou tentando fazer é dividir o programa por funções e colocar uma biblioteca com definições de macros, protótipo de funções etc. Ai que está o problema! Não estou conseguindo fazer isso. Eu tinha lido algumas coisas sobre colocar #ifndef na bilbioteca, mas eu não entendi. Se alguém puder me explicar como eu faço pra criar a biblioteca eu agradeceria. Obs1.: O erro que aparece quando eu tendo compilar o main() é: 5 In file included from C:\Documents and Settings\Administrator\Desktop\Trabalho 2\Trabalho\TESTE com biblioteca\main(teste).c Obs2.: por favor, expliquem com detalhes. Vou colocar o que estou fazendo: Função main() #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> #include "biblioteca.h" #define SENHA 00000000 /*Os protótipos de muitas funções estão na biblioteca xxx*/ /*variáveis para uso da função password*/ char adm[80]; char passw[9]; main() { /*variáveis para uso no menu principal*/ int opM,verdade=1; /*variáveis uso geral, main()*/ /*explicação de algumas variáveis fpB=ponteiro para arquivo, B de brinquedo */ int i,j,a,b,c; char ch1,ch2; FILE *fpB; /*Arquivos, B de brinquedo, C de clinte*/ if((fpB=fopen("cadastroB.dat", "ab+"))==NULL){printf("\nProblema ao abrir o arquivo\n");sleep(2000);exit(1);} while(verdade) { printf("\nAdministrador(1)"); printf("\nVendedor(2)"); printf("\nCliente(3)"); scanf("%d",&opM); switch (opM) { case 1: printf("\nNome do usuário: "); fflush(stdin); gets(adm); printf("\nSenha: "); for (i=0; i<8; i++) { *(passw+i)=ch1=getch(); if(*(passw+i)=='\r') { printf("\nA senha precisa ser maior\n"); printf("Senha: "); i=-1; continue; } printf("*"); } *(passw+(i+1))=''; password(); administrador(); default: printf("\nOp\x87\xE3o inv\x0lida, repita a opera\x87\xE3o\n"); sleep(2000); system("cls"); } } system ("PAUSE"); return 0; } /*Definição das funções*/ /*definição adiministrador()*/ void administrador(void) { /*explicação de algumas variáveis fpB=ponteiro para arquivo, B de brinquedo */ int opM,i,verdade[4]; tipo_brinquedo=brinquedo; FILE *fpB; for(i=0;i<4;i++)verdade[i]=1; /*explicação de algums arquivos brinquedo_CD=cadastro de brinquedos, o C não é de cliente */ if((fpB=fopen("brinquedo_CD.dat","ab+"))==NULL)ERROA(brinquedoC.dat); do { printf("\t\tADMINISTRA\X87\AO"); printf("\n\n\t\tMENU\n\n"); printf("\nCadastrar brinquedos(1)"); printf("\nAlterar preço dos brinquedos(2)"); printf("\nRegistro de uso dos brinquedos(3)"); printf("\nRetornar ao menu principal(4)"); scanf("%d",&opM); switch(opM) { case 1: do{brinquedo=cadastraB(); if(fwrite(&brinquedo, sizeof(tipo_brinquedo), 1, fpB) != 1)ERROE; printf("Deseja cadastrar outro brinquedo? 1=sim ou 0=não: "); scanf("%d",verdade[1]); }while(verdade[1]);system("CLS");break; case 4: exit(1); default: printf("Op\x87\ inv\x0lida"); sleep(2000); system("CLS"); } }while(verdade[0]); fclose(fpB); } /*definição password()*/ void password(void) { char compara[9]={'0','0','0','0','0','0','0','0',''}; int comp; comp=strcmp(passw,compara); if(comp == 0) printf("\nTudo certo"); } Função administrador() #include "biblioteca.h" #include "cadastraB.c" /*definição adiministrador()*/ void administrador(void) { /*explicação de algumas variáveis fpB=ponteiro para arquivo, B de brinquedo */ int opM,i,verdade[4]; tipo_brinquedo=brinquedo; FILE *fpB; for(i=0;i<4;i++)verdade[i]=1; /*explicação de algums arquivos brinquedo_CD=cadastro de brinquedos, o C não é de cliente */ if((fpB=fopen("brinquedo_CD.dat","ab+"))==NULL)ERROA(brinquedoC.dat); do { printf("\t\tADMINISTRA\X87\AO"); printf("\n\n\t\tMENU\n\n"); printf("\nCadastrar brinquedos(1)"); printf("\nAlterar preço dos brinquedos(2)"); printf("\nRegistro de uso dos brinquedos(3)"); printf("\nRetornar ao menu principal(4)"); scanf("%d",&opM); switch(opM) { case 1: do{brinquedo=cadastraB(); if(fwrite(&brinquedo, sizeof(tipo_brinquedo), 1, fpB) != 1)ERROE; printf("Deseja cadastrar outro brinquedo? 1=sim ou 0=não: "); scanf("%d",verdade[1]); }while(verdade[1]);system("CLS");break; case 2: alteraPB();system("CLS");break; case 3: verUB();system("CLS");break; case 4: exit(1); default: printf("Op\x87\ inv\x0lida"); sleep(2000); system("CLS"); } }while(verdade[0]); fclose(fpB); } Função cadastraB() #include <stdio.h> #include <stdlib.h> /*definição cadastraB*/ tipo_brinquedo cadastraB(void) { /*explicação sobre letras usadas nas variáveis: P=ponteiro F=arquivo(file), tabém pode ser float B=brinquedo S=string I=inteiro */ int i,verdade[4]; tipo_brinquedo brinquedo; for(i=0;i<4;i++)verdade[i]=1; system("CLS"); do{ printf("\t\tCADASTRO DE BRINQUEDOS\n\n"); printf("Nome do brinquedo: "); fflush(stdin); gets(brinquedo.nome); verdade[0]=0; }while(verdade[0]); do{ printf("N\xa3mero do brinquedo: "); fflush(stdin); gets(brinquedo.numeroS); RESTRICAO09(i,brinquedo.numeroS,brinquedo.numeroS); brinquedo.numeroI=atoi(brinquedo.numeroS); verdade[1]=0; }while(verdade[1]); do{ printff("Pre\x87 do brinquedo: "); fflush(stdin); gets(brinquedo.precoS); RESTRICAO09(i,brinquedo.precoS,brinquedo.precoS); brinquedo.precoF=atof(brinquedo.precoS); verdade[2]=0; }while(verdade[2]); do{ printf("Acesso ao brinquedo (Vip, 1=sim ou 0=não): "); fflush(stdin); gets(brinquedo.vipS); RESTRICAO09(i,brinquedo.vipS,brinquedo.vipS); brinquedo.vipI=atoi(brinquedo.vipS); verdade[3]=0; }while(verdade[3]); return brinquedo; } blioteca.h #include <stdio.h> #include <stdlib.h> #include "administrador.c" #include "cadastaB." /* #include "administrador.c" #include "cadastraB.c" #include "TrabBETA0.02(teste).c" */ /*Declarações de tipos*/ typedef struct tipo_brinquedo { char nome[80], numeroS[80], idadeS[3], vipS[2],precoS[3]; short int numeroI, idadeI, vipI; float precoF; }; /*Fim das declarações de tipos*/ /*====================================================================================================================================*/ /*definições*/ /*macros e afins*/ /*Algumas explicações restrição09=restringe os valores a dígitos de 0 a 9 */ #define RESTRICAO09(i,x,y) for(i=0;i<80;i++){if(x < 48 || y > 57){printf("S\x2 \x82 permitido n\x3meros");sleep(2000);system("CLS");continue;}} /*Definição de erros*/ /*Algumas explicações ERROA=erro de arquivo ERROE=erro de escrita */ #define ERROA(n) printf("\nErro de abertura", n);sleep(2000);exit(1); #define ERROE(n) printf("\nErro de escrita", n);sleep(2000);break; /*Fim das definições de macros*/ /*====================================================================================================================================*/ /*Declarações das funções*/ /*Os espaços separam as classes, administrador, vendedor, cliente*/ /*O primeiro nome após o espaço é sempre da classe e os nomes que se seguem são funções usadas dentro da classe*/ /*Significado de alguma letras usadas no nome de funções: B=brinquedo C=cliente P=preço U=uso */ extern void administrador(void); extern void password(void); extern tipo_brinquedo cadastraB(void); extern void alteraPB(void); extern void verUB(void); extern void vendedor(void); extern void cadastroC(void); extern void recarregarC(void); extern void cliente(void); /*Fim das declarações de funões*/ /*====================================================================================================================================*/
  2. Valeu ai pela ajuda kuroi. Consegui resolver meu problema. O programa está rodando perfeitamente.
  3. dark_max

    Ajuda com Vetores

    Velho, não sei se entendi direito o que você está querendo, mas se for o que eu to pensando tenta fazer assim: Cria uma variável "int j" e coloca um laço "for" depois do printf("%.1f\n", media); if (i>2){ media=soma+n; printf("%.1f\n", media); /*Você quer deixar os valore n+n[i-1]+n[i-2], ou seja, os três últimos. Então você tem que tirar os valores anteriores... Se você não quiser alterar o valor de "média", é só atribuir o valor dela à outra variável*/ for(j=0; j<(i-2); j++) media_movel=media-n[j]; media_movel=media/3; /*Não entendi o porque de você imprimir o valor de n-3. */ printf("%.1f\n", n-3); printf("%d\n", media_movel); } }getch(); } Obs.: Não testei o código, mas isso deve funcionar. Obs.: Dúvida pessoal. Como eu faço pra inserir o código em uma caixa (CODEBOX) como você fez? Toda vez que eu tento usar a opção inserir item especial -> CODEBOX, recebo a mensagem de "request URL was not found on this server (404)".
  4. Galera é o seguinte, alguém poderia me dizer onde está o erro desse programa. (NÃO CONSEGUI INSERIR NA CODEBOX - ERROR 404) Obs1.: O programa está bem bagunçado. Estou começando em C e a inda não pequei as "manhas" em organização. Obs2.: Estou compilando no Dev-C++ 4.9.9.2 Obs3.: O compilador me retorna a mensagem: invalid digit "8" in octal constant. Na parte destinada ao código do produto eu estou colocando coisas do tipo, 009, faço isso porque preciso que o código do produto tenha três dígitos. Obs4.: Antes da função main(), dentro de /*definição das estruturas e/ou inicialização - inicio*/, há essa expressão paga.produtosCONT=0; , não sei o que está errada com ela (quando eu retiro a expressão, o erro indicado pelo compilador é o da Obs3. Obs5.: O erro do "octal" provavelmente é porque estou usando valores do tipo 001, como mencionei acima. Como eu contorno essa situação, lembrando que o código do produto precisa ter 3 dígitos. #include <stdlib.h> #include <stdio.h> #include <string.h> #define QUANTIDADE 10 #define LIMITA 1000 #define NOME 100 /*protótipo da função inicia()*/ void iniciar(void); /*protótipo da função pagamento()*/ void pagamento(void); /*protótipo da função cupom()*/ void cupom(void); /*declaração das estruturas*/ struct armazena { char nome[NOME]; float prec; int cod; }; struct pagamento { float totalB; float totalL; float precPARCELA; float DescJur; int parcelas; int produtos[LIMITA]; int produtosCONT; char ProdNome[NOME]; }; /*Explicação sobre algumas variáveis produtosCONT = contador de produtos comprados */ /*declaração das estruturas - fim*/ /*definição das estruturas e/ou inicialização - inicio*/ struct armazena produto[] = { {"Red Bull",7.99,001},{"Bisc. Passa Tempo",2.29,002},{"Banana Prata Kg",1.52,003},{"Hamburguer Sadia Frango", 8.75,004}, {"Azeite Oliva Galo 500ml",16.10,005},{"Atum Coqueiro lata 120g",4.05,006},{"Macarrao Galo 500g",4.20,007},{"Pao Seven Boys 500g",3.49,008}, {"Catchup Arisco 390g",3.20,009},{ "Leite Batavo integral 1L",2.20,010},'' }; struct pagamento paga; paga.produtosCONT=0; /*definição das estruturas e/ou inicialização - fim*/ float totalFinal=0; /*Declaração de variáveis genéricas*/ int verdade=1, n=QUANTIDADE, fim; char ch; main() { while (verdade) { printf("Selecione a opcao desejada: "); printf("\nTecle I para iniciar o caixa"); printf("\n F para finalizar"); switch (ch) { case 'I': iniciar(); pagamento(); cupom(); break; case 'F': printf("\nValor arrecadado no dia: %f\n",paga.totalL); verdade=0; break; default: break; } } system("PAUSE"); return 0; } /*definição da função iniciar*/ void iniciar(void) { /*cod=código, codS=código simples (inteiro), subT=subtotal temporário*/ int quant,i,codS,j=0; float subT,subTT; char cod[4]; /* teste string e teste simple, um recebe 000 e o outro termina o laço */ int teste; int testeS; int t=0; while (teste) { printf("\nDigite o código do produto: "); gets(cod); codS=atoi(cod); if(cod[0] == 0 && cod[1] == 0 && cod[2] == 0) { teste=0; break; } else { for(i=0; i<n; i++) { if(codS == produto[i].cod) { paga.produtos[i]=produto[i].cod; paga.produtosCONT++; j=i; i=n; t++; } } if(t == 0) { printf("Código inexistente. Por favor, digite um codigo correto"); break; } } printf("\nDigite a quantida do produto: "); scanf("%d", &quant); subTT=(quant*produto[j].prec); subT+=subTT; printf("\nO subtotal da compra = %0.2f",subT); } paga.totalB=subT; return; } /*definição da função pagamento()*/ void pagamento(void) { int parc; int verdade2=1; printf("\nPAGAMENTO"); printf("\nObservações:"); printf("\nO número máximo de parcelas é 12."); printf("\nHá um desconto de 5%% sobre pagamentos avista."); printf("\n\nDigite os dados a seguir."); while (verdade2) { printf("\n\nQuantidade de parcelas (1 para pagamentos avista): "); scanf("%d", &parc); if(parc == 0) { printf("O valor 0 (zero) não é válido como parcela. Digite outro valor."); break; } else { if(parc <= 12) verdade2=0; else { printf("\nValor inválido. Digite um número menor que 12 e maior que 0 (zero)"); break; } } } if(parc == 1 ) { paga.totalL=(paga.totalB*0.95); paga.DescJur=5; } else { paga.totalL=(paga.totalB*(parc*1.03)); paga.DescJur=(parc*1.03); } paga.precPARCELA=(paga.totalL/parc); paga.parcelas=parc; } /*definição da função cupom()*/ void cupom(void) { int i=0,j=0,c=0,d=0; system("CLS"); printf("\nCupom Fiscal"); printf("\nProdutos comprados:"); j=paga.produtosCONT; for (i=0; i<j; i++) { for(c=0; c<n; c++) { if(paga.produtos[i] == produto[c].cod) printf("\n%d\t%s\t%f",paga.produtos[i],produto[c].nome,produto[c].prec); } } printf("\nPreço total da compra: %f", paga.totalL); if(paga.parcelas != 1) { printf("\nPreço das parecelas : %f",paga.precPARCELA); printf("\nJuros: %f",paga.DescJur); } else if(paga.parcelas == 1) { printf("\nPagamento realizado a vista, parecela única"); printf("\nDesconto 5%"); } totalFinal = (float)(totalFinal+paga.totalL); }
×
×
  • Criar Novo...