
juninholiveira90
Membros-
Total de itens
2 -
Registro em
-
Última visita
Sobre juninholiveira90

- Data de Nascimento 16/08/1990
Contatos
-
MSN
juninholiveira2004@yahoo.com.br
-
Website URL
http://www.aabernardinense.com.br
Perfil
-
Gender
Male
-
Location
Bernardino de Campos - SP
juninholiveira90's Achievements
0
Reputação
-
E aí galera ! estou com um probleminha aqui no meu programa que estou fazendo, vou tentar se bem breve para ver se voces intendem com mais facilidade ! É o seguinte, eu montei um programa que é para uma confeitaria onde pede para inserir, excluir e alterar cadastros de bolos e de clientes. A inserção e alteração dos clientes e do bolo esta funcionando corretamente, porém quando eu vou fazer um pedido, eu peço para que seja alterada a quantidade de bolo que tem no estoque e apenas sobrescrever a quantidade dos bolos, mas no momento em que eu faço essa alteração no pedido ocorre um problema ( eu acho que deve ser buffer cheio mas não sei se existe comando do tipo fflush(stdin) para manipulação de arquivos ). Aí surge mais um probleminha, antes eu conseguia inserir normalmente os bolos e tal.. depois que eu faço a alteração deste pedido, eu já não consigo nem cadastrar mais os bolos.. alguém poderia estar me dando um Help ae ? ...... do{ printf("\nA quantidade do estoque %i",b.quantidadebolo); printf("\nQuantidade :"); fflush(stdin); scanf("%i",&p.pquantidadebolo); if( p.pquantidadebolo > b.quantidadebolo) printf("\n Quantidade invalida!!!"); } while(( p.pquantidadebolo > b.quantidadebolo)); // tira a quantiade de bolos vendidos b.quantidadebolo= b.quantidadebolo - p.pquantidadebolo; // calcula o preço do bolo p.valortotalpedido = b.precobolo * p.pquantidadebolo; printf("\nPreco Total : %8.2f ",p.valortotalpedido); // aqui ele exibe o valor certo do pedido printf("\n%8.2f ",p.valortotalpedido); // já não exibe mais o valor correto ( Porque ? ) //aqui esta com erro ! fseek(bolo1,ftell(bolo1) - sizeof(struct bolo),0); fwrite(&b,sizeof(struct bolo),1,bolo1); fseek(pedido1,0,SEEK_END); fwrite(&p,sizeof(struct pedido),1,pedido1); fflush(stdin); getchar(); break; }//Fim do case 3
-
Meu programa abaixo esta com o seguinte problema Até agora de pouco eu estava conseguindo cadastrar tudo, fazer alterações tudo certinho. Derrepente sem eu nem mecher no código(o que até parece estranho para voce que esta lendo), meu programa começou a fazer atualizaçoes todas incorretas. Primeiro ele funcionava direitinho, depois de alguns minutos ele começou a dar pau sem mecher no código.. Sera que isto é problema com sujeira no buffer ou algo do tipo ? Se puderem me ajudar, é só copiar e colocar este programa no C++ que ele funciona certinho, só não sei se ele vai dar o mesmo problema que aqui em casa ! Obrigado #include<stdio.h> #include<conio.h> #include<stdlib.h> struct cliente{ int codigocliente,numerocliente; char nomecliente[100],enderecocliente[100],exccliente; };// fim da struct cliente struct bolo{ float precobolo; int codigobolo, quantidadebolo; char nomebolo[100],excbolo; };//Fim da struct bolo struct pedido{ int codigopedido,pcodigocliente,pcodigobolo,pquantidadebolo; float valortotalpedido; char pnomecliente, pnomebolo,excpedido; };//fim da struct pedido FILE *cliente1; FILE *bolo1; FILE *pedido1; //função para verificar se o cod cliente já existe struct cliente verificaCliente(int cod){ int achou_reg = 0; cliente procura; fseek (cliente1, 0, SEEK_SET); while (! feof (cliente1) && (!achou_reg) ){ fread (&procura, sizeof(struct cliente), 1, cliente1); if((procura.codigocliente == cod) && (procura.exccliente != '*')) achou_reg = 1; } return procura; }// fim da função verificaCliente //função para verificar se o codbolo já existe struct bolo verificaBolo(int cod){ int achou_reg = 0; bolo procura; fseek (bolo1, 0, SEEK_SET); while (! feof (bolo1) && (!achou_reg) ){ fread (&procura, sizeof(struct bolo), 1, bolo1); if((procura.codigobolo == cod) && (procura.excbolo != '*')) achou_reg = 1; } return procura; }// fim da função verificaBliente struct pedido verificaPedido(int cod){ int achou_reg = 0; pedido procura; fseek (pedido1, 0, SEEK_SET); while (! feof (pedido1) && (!achou_reg) ){ fread (&procura, sizeof(struct pedido), 1, pedido1); if((procura.codigopedido == cod) && (procura.excpedido != '*')) achou_reg = 1; } return procura; }// fim da função verificaPedido int main() { //declaração das variáveis int opcao,codigocliente,codigobolo,codigopedido; //criando o arquivo caso não tenha, e se tiver ele abre o arquivo para depois efetuar pesquisas if((cliente1 = fopen("d:cliente.dat","r+")) == NULL) cliente1 = fopen("d:cliente.dat","w+"); if((bolo1 = fopen("d:bolo.dat","r+")) == NULL) bolo1 = fopen("d:bolo.dat","w+"); if((pedido1 = fopen("d:pedido.dat","r+")) == NULL) pedido1 = fopen("d:pedido.dat","w+"); //criando as referencias cliente c; bolo b; pedido p; printf("\n 1 - Cadastrar cliente\n 2 - Cadastrar Bolo\n 3 - Cadastrar Pedido \n 6 - Cliente Cadastrado\n 7 - Bolo Cadastrado \n 8 - Pedidos Cadastrados\n"); fflush(stdin); scanf("%i",&opcao); while(opcao != 0){ switch (opcao){ case 1: { //colocando o apontador no fim do arquivo fseek(cliente1,0,SEEK_END); printf("\nDigite o codigo do cliente\n"); fflush(stdin); scanf("%i",&codigocliente); while(codigocliente < 0){ printf("\nCodigo não pode ser menor que 0\n Digite novamente: "); fflush(stdin); scanf("%i",&codigocliente); }//Fim do codigocliente < 0 //verifica se o código do cliente já existe c = verificaCliente(c.codigocliente); while(codigocliente > 0){ fflush(stdin); c = verificaCliente(codigocliente); // funcao if(c.codigocliente == codigocliente){ printf("Codigo já cadastrado!\n"); printf("Codigo do Cliente: "); fflush(stdin); scanf("%i",&codigocliente); }//fim do if else{ c.codigocliente = codigocliente; break; }//fim do else }//fim do while printf("\nDigite o nome \n"); fflush(stdin); gets(c.nomecliente); printf("\nDigite o endereco \n"); fflush(stdin); gets(c.enderecocliente); printf("\nDigite o numero \n"); fflush(stdin); scanf("%i",&c.numerocliente); fseek(cliente1,0,SEEK_END); fwrite(&c,sizeof(struct cliente),1,cliente1); break; }//Fim do case 1 case 2:{ fseek(bolo1,0,SEEK_END); printf("\nDigite o codigo do bolo \n"); fflush(stdin); scanf("%i",&codigobolo); while(codigobolo < 0){ printf("\nCodigo não pode ser menor que 0\nDigite novamente: "); fflush(stdin); scanf("%i",&codigobolo); }//Fim do codigocliente < 0 //chamando a função b = verificaBolo(codigobolo); while(codigobolo > 0){ fflush(stdin); b = verificaBolo(codigobolo); // funcao if(b.codigobolo == codigobolo){ printf("Codigo já cadastrado!\n"); printf("Codigo do Bolo: "); fflush(stdin); scanf("%i",&codigobolo); }//fim do if else{ b.codigobolo = codigobolo; break; }//fim do else }//fim do while printf("\nDigite o nome \n"); fflush(stdin); gets(b.nomebolo); printf("\nDigite a quantidade\n"); fflush(stdin); scanf("%i",&b.quantidadebolo); while(b.quantidadebolo < 0){ printf("Quantidade invalida\n Digite novamente"); fflush(stdin); scanf("%i",&b.quantidadebolo); }//fim while quantidade bolo < 0 printf("\nDigite o preço\n"); fflush(stdin); scanf("%f",&b.precobolo); while(b.precobolo < 0){ printf("Valor invalido\n Digite novamente"); fflush(stdin); scanf("%i",&b.precobolo); }// Fim do while b.precobolo < 0 fseek(bolo1,0,SEEK_END); fwrite(&b,sizeof(struct bolo),1,bolo1); break; }//Fim do case 2 case 3:{ fseek(pedido1,0,SEEK_SET); printf("\nDigite o codigo do pedido\n"); fflush(stdin); scanf("%i",&codigopedido); while(codigopedido < 0){ printf("Codigo invalido\nDigite novamente: "); fflush(stdin); scanf("%i",&codigopedido); }//fim do while codigopedido <0 //chamando a função para verificar se o código do pedido já existe while(codigopedido > 0){ fflush(stdin); p = verificaPedido(codigopedido); // funcao if(p.codigopedido == codigopedido){ printf("Codigo já cadastrado!\n"); printf("Codigo do Bolo: "); fflush(stdin); scanf("%i",&codigopedido); }//fim do if else{ p.codigopedido = codigopedido; break; }//fim do else }//fim do while printf("\nCodigo do Cliente: "); fflush(stdin); scanf("%i",&codigocliente); do{ //verificando se o cliente existe c = verificaCliente(codigocliente); if(c.codigocliente != codigocliente){ printf("\nCliente não encontrado\n"); fflush(stdin); scanf("%i",&codigocliente); }// fim do if }while(c.codigocliente != codigocliente); p.pcodigocliente = codigocliente; printf("\nCodigo do bolo: "); fflush(stdin); scanf("%i",&codigobolo); do{ //verificando se o bolo existe ou não b = verificaBolo(codigobolo); if(b.codigobolo != codigobolo){ printf("\nBolo não encontrado: "); fflush(stdin); scanf("%i",&codigobolo); }// fim do if }while(b.codigobolo != codigobolo); p.pcodigobolo = codigobolo; do{ printf("\nA quantidade do estoque %i",b.quantidadebolo); printf("\nQuantidade :"); fflush(stdin); scanf("%i",&p.pquantidadebolo); if( p.pquantidadebolo > b.quantidadebolo) {printf("\n\aA quantidade invalida!!!"); } } while(( p.pquantidadebolo > b.quantidadebolo)); // tira a quantiade de bolos vendidos b.quantidadebolo= b.quantidadebolo - p.pquantidadebolo; // calcula o preço do bolo p.valortotalpedido = b.precobolo * p.pquantidadebolo ; printf("\nPreco Total : %8.2f ",p.valortotalpedido); //aqui esta com erro ! fseek(bolo1,ftell(bolo1) - sizeof(struct bolo),0); fwrite(&b,sizeof(struct bolo),1,bolo1); fseek(pedido1,0,SEEK_END); fwrite(&p,sizeof(struct pedido),1,pedido1); fflush(stdin); getchar(); break; }//Fim do case 3 case 6:{ system("cls"); fseek(cliente1,0,SEEK_SET); while(fread(&c,sizeof(struct cliente),1,cliente1) == 1 ) printf("\n Codigo cliente: %i \n Nome cliente: %s \n Endereco cliente: %s \n Numero: %i\n", c.codigocliente,c.nomecliente,c.enderecocliente,c.numerocliente ); fflush(stdin); getchar(); break; }//Fim do case 6 case 7:{ system("cls"); fseek(bolo1,0,SEEK_SET); while( fread (&b,sizeof(struct bolo),1,bolo1) == 1 ) printf("\n\nCodigo bolo: %i\nNome : %s\nQuantidade: %i\nPreco: %8.2f\n",b.codigobolo,b.nomebolo,b.quantidadebolo,b.precobolo); fflush(stdin); getchar(); break; }//Fim do case 7 case 8:{ system("cls"); fseek(pedido1,0,SEEK_SET); while( fread (&p,sizeof(struct pedido),1,pedido1) == 1 ) printf("\nCodigo pedido: %i \nCodigo bolo: %i \nCodigo cliente: %i \nPreco pedido: %8.2f \n",p.codigopedido,p.pcodigobolo,p.pcodigocliente,p.valortotalpedido); fflush(stdin); getchar(); break; }//fim do case 8 }// fim do switch system("cls"); printf("\n 1 - Cadastrar cliente\n 2 - Cadastrar Bolo\n 3 - Cadastrar Pedido \n 6 - Cliente Cadastrado\n 7 - Bolo Cadastrado \n 8 - Pedidos Cadastrados\n"); fflush(stdin); scanf("%i",&opcao); }//fim do while opcao fclose(cliente1); fclose(bolo1); }// Fim da main