Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

ruir888

o que e que esta a contecer

Mensagens Recomendadas

ruir888

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <locale.h>

struct menu//defenir as variaveis que estão no menu ou nele interveêm
{
int pass;//password
int a;//meu principal
int teste;//confirmação
int b;//menus secundarios
};
struct gerir
{
   int c;//código do produto
   int st;//usado para guardar a quantidade dos produtos antes de estes serem guardados no .txt
   int co;//preço unitario
};

int main()
{    system ("color F9");
    setlocale(LC_ALL,"protuguese");
    struct menu m;
    struct gerir g;
FILE *fp0=fopen("stock0.txt","w+");//fixeiros txt para guardar as quantidades de cada produto
FILE *fp1=fopen("stock1.txt","w+");
FILE *fp2=fopen("stock2.txt","w+");
FILE *fp3=fopen("stock3.txt","w+");
FILE *fp4=fopen("stock4.txt","w+");
FILE *fp5=fopen("stock5.txt","w+");
FILE *fp6=fopen("stock6.txt","w+");
FILE *fp7=fopen("stock7.txt","w+");
FILE *fp8=fopen("stock8.txt","w+");
FILE *fp9=fopen("stock9.txt","w+");
FILE *fpA=fopen("stockA.txt","w+");
FILE *fpB=fopen("stockB.txt","w+");
FILE *fpC=fopen("stockC.txt","w+");
FILE *fpD=fopen("stockD.txt","w+");


FILE *ap0=fopen("preco0.txt","w+");//fixeiros txt para guardar os preços dos produtos
FILE *ap1=fopen("preco1.txt","w+");
FILE *ap2=fopen("preco2.txt","w+");
FILE *ap3=fopen("preco3.txt","w+");
FILE *ap4=fopen("preco4.txt","w+");
FILE *ap5=fopen("preco5.txt","w+");
FILE *ap6=fopen("preco6.txt","w+");
FILE *ap7=fopen("preco7.txt","w+");
FILE *ap8=fopen("preco8.txt","w+");
FILE *ap9=fopen("preco9.txt","w+");
FILE *apA=fopen("precoA.txt","w+");
FILE *apB=fopen("precoB.txt","w+");
FILE *apC=fopen("precoC.txt","w+");
FILE *apD=fopen("precoD.txt","w+");

    printf("digite a password:");
    scanf("%i",&m.pass);
    if(m.pass!=12345)
    {
        printf("acesso não autorizado");
    }else

    {
        printf("Acesso autorizado\nBEM VINDO\n\n");
        do{
               printf("digite o que pretende fazer:\n[1]-gerir stock\n[2]-registar vendas\n[3]-obter relatorio\n[4]-sair\n");
               scanf("%i",&m.a);
               switch(m.a)
               {
               case 1:
                   do
                       {
                           printf("digite:\n[1]-adiconar nvo produto\n[2]-excluir produto\n");
                           scanf("%i",&m.b);
                           if(m.b==1)
                           {
                               do{
                                   printf("digite código do produto (sendo que este tem de ser sequencial e de 1 a 14):");
                               scanf("%i",&g.c);
                               switch(g.c)
                               {
                               case 1:printf("digite a quantidade de produto que tem em stock:");
                                      scanf("%i",&g.st);
                                      fprintf(fp0,"%i",g.st);

                                      printf("\ndigite o preço unitario:");
                                      scanf("%i",g.co);
                                      fprintf(ap0,"%i",g.co);break;

                               case 2:printf("digite a quantidade de produto que tem em stock:");
                                      scanf("%i",&g.st);
                                      fprintf(fp1,"%i",g.st);

                                      printf("\ndigite o preço unitario:");
                                      scanf("%i",g.co);
                                      fprintf(ap1,"%i",g.co);break;

                               case 3:printf("digite a quantidade de produto que tem em stock:");
                                      scanf("%i",&g.st);
                                      fprintf(fp2,"%i",g.st);

                                      printf("\ndigite o preço unitario:");
                                      scanf("%i",g.co);
                                      fprintf(ap2,"%i",g.co);break;

                               case 4:printf("digite a quantidade de produto que tem em stock:");
                                      scanf("%i",&g.st);
                                      fprintf(fp3,"%i",g.st);

                                      printf("\ndigite o preço unitario:");
                                      scanf("%i",g.co);
                                      fprintf(ap3,"%i",g.co);break;

                               case 5:printf("digite a quantidade de produto que tem em stock:");
                                      scanf("%i",&g.st);
                                      fprintf(fp4,"%i",g.st);

                                      printf("\ndigite o preço unitario:");
                                      scanf("%i",g.co);
                                      fprintf(ap4,"%i",g.co);break;

                               case 6:printf("digite a quantidade de produto que tem em stock:");
                                      scanf("%i",&g.st);
                                      fprintf(fp5,"%i",g.st);

                                      printf("\ndigite o preço unitario:");
                                      scanf("%i",g.co);
                                      fprintf(ap5,"%i",g.co);break;

                               case 7:printf("digite a quantidade de produto que tem em stock:");
                                      scanf("%i",&g.st);
                                      fprintf(fp6,"%i",g.st);

                                      printf("\ndigite o preço unitario:");
                                      scanf("%i",g.co);
                                      fprintf(ap6,"%i",g.co);break;

                               case 8:printf("digite a quantidade de produto que tem em stock:");
                                      scanf("%i",&g.st);
                                      fprintf(fp7,"%i",g.st);

                                      printf("\ndigite o preço unitario:");
                                      scanf("%i",g.co);
                                      fprintf(ap7,"%i",g.co);break;

                               case 9:printf("digite a quantidade de produto que tem em stock:");
                                      scanf("%i",&g.st);
                                      fprintf(fp8,"%i",g.st);

                                      printf("\ndigite o preço unitario:");
                                      scanf("%i",g.co);
                                      fprintf(ap8,"%i",g.co);break;

                               case 10:printf("digite a quantidade de produto que tem em stock:");
                                      scanf("%i",&g.st);
                                      fprintf(fp9,"%i",g.st);

                                      printf("\ndigite o preço unitario:");
                                      scanf("%i",g.co);
                                      fprintf(ap9,"%i",g.co);break;

                               case 11:printf("digite a quantidade de produto que tem em stock:");
                                      scanf("%i",&g.st);
                                      fprintf(fpA,"%i",g.st);

                                      printf("\ndigite o preço unitario:");
                                      scanf("%i",g.co);
                                      fprintf(apA,"%i",g.co);break;

                               case 12:printf("digite a quantidade de produto que tem em stock:");
                                      scanf("%i",&g.st);
                                      fprintf(fpB,"%i",g.st);

                                      printf("\ndigite o preço unitario:");
                                      scanf("%i",g.co);
                                      fprintf(apB,"%i",g.co);break;

                               case 13:printf("digite a quantidade de produto que tem em stock:");
                                      scanf("%i",&g.st);
                                      fprintf(fpC,"%i",g.st);

                                      printf("\ndigite o preço unitario:");
                                      scanf("%i",g.co);
                                      fprintf(apC,"%i",g.co);break;

                               case 14:printf("digite a quantidade de produto que tem em stock:");
                                      scanf("%i",&g.st);
                                      fprintf(fpD,"%i",g.st);

                                      printf("\ndigite o preço unitario:");
                                      scanf("%i",g.co);
                                      fprintf(apD,"%i",g.co);break;


                               }printf("deseja acrescentar mais algum produto?\n[1]-sim\n[2]-não");
                               scanf("%i",&m.teste);

                               }while(m.teste==1);

                           }else if(m.b==2)
                           {do
                           {
                               printf("digite o código do produto que deseja excluir");
                               scanf("%i",g.c);
                               switch(g.c)
                               {
                               case 1:fprintf(fp0,"");

                                      fprintf(ap0,"");break;

                               case 2:fprintf(fp1,"");

                                      fprintf(ap1,"");break;

                               case 3:fprintf(fp2,"");

                                      fprintf(ap2,"");break;

                               case 4:fprintf(fp3,"");

                                      fprintf(ap3,"");break;

                               case 5:fprintf(fp4,"");

                                      fprintf(ap4,"");break;

                               case 6:fprintf(fp5,"");

                                      fprintf(ap5,"");break;

                               case 7:fprintf(fp6,"");

                                      fprintf(ap6,"");break;

                               case 8:fprintf(fp7,"");

                                      fprintf(ap7,"");break;

                               case 9:fprintf(fp8,"");

                                      fprintf(ap8,"");break;

                              case 10:fprintf(fp9,"");

                                      fprintf(ap9,"");break;

                              case 11:fprintf(fpA,"");

                                      fprintf(apA,"");break;

                              case 12:fprintf(fpB,"");

                                      fprintf(apB,"");break;

                              case 13:fprintf(fpC,"");

                                      fprintf(apC,"");break;

                              case 14:fprintf(fpD,"");

                                      fprintf(apD,"");break;


                               }printf("deseja excluir mais algum produto?\n[1]-sim\n[2]-não");
                               scanf("%i",&m.teste);

                               }while(m.teste==1);

                           }


                   }while(m.teste==1);break;

               }






        }while (m.a==3 || m.a==1 || m.a==2);


    }






   return 0;
}

eu tenho um projeto final para fazer mas quando chega a parte de acrescentar produtos diz que que o programa deixa de responder. Alguem me sabe dizer pq?

Editado por pwseo
syntax highlight!...............

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

não vou comentar a qualidade do código, vou deixar isso para o teu professor.

no que toca ao teu problema, faz a limpeza do buffer de entrada após as chamadas scanf


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ruir888

desculpa a minha ignorância mas como é que eu limpo o buffer?

ja descobri mas não resultou pode ser problema das variáveis ou do txt??

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

eu to no 10 ano por isso é normal que n seja pro nenhum mas obg pela ajuda

sem comentários

pode ser problema das variáveis ou do txt??

olha bem para as tuas chamadas da função scanf ?

deverás ter algum exemplo nos teus apontamentos das aulas


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PsySc0rpi0n

Eu tentei apenas corrigir a indentação e os parêntesis que andavam muitos fora de sítio...

https://ideone.com/Eianqx

Obviamente ainda pode estar algo errado.

Uma sugestão...

O code dos switch cases pode ser feito em 1/4 das linhas que tens. Basta para isso criares uma função que faça o que tens em cada case, enviando para ela os parâmetros que necessitas e depois nos cases fazes apenas a chamada da função e o break...

PS: acho que te faltam ainda dois cases do switch mais externo. E também, todos os switchs devem ter um default para evitar erros que venham sem a gente contar!

switch (opt){
   case 1: /*code here*/
   /*...
     ...
   */
   default: /*code here*/
}

Editado por PsySc0rpi0n

Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.