GeniousMan Posted January 6, 2017 at 11:38 PM Report Share #601871 Posted January 6, 2017 at 11:38 PM Boa Noite a todos presentes neste blog, só queria esclarecer uma pequena dúvida que me surgiu ao fazer 1 trabalho, nada de me fazerem o código nem nada que se pareça. Era só para me darem algumas luzes ou mostrarem-me alguns liks que me possam ajudar nesta dúvida. Eu preciso de criar uma categoria de produtos e depois ligar essa categoria aos produtos em si, só que não sei como o fazer, já andei a pesquisar listas ligadas mas não encontrei nada que me ajudasse. E já agora na linha 53 aparece-me 1 erro, julgo eu que seja pelo ponteiro p1 se me conseguissem ajudar nesse erro também agradecia. Desde já muito obrigado!! Este é o código feito até agora. #include <stdio.h> #include <stdlib.h> #include <io.h> #include <conio.h> int cont=0; typedef struct categoria { char mercearias[60]; char padaria[20]; char enlatados[15]; char peixe[20]; char carne[20]; char bebidas[10]; char pessoal[15]; char limpeza[20]; char congelados[10]; char fruta[10]; char legumes[10]; }CATEGORIA; typedef struct produto { char nome[50]; int cod; char categoria[50]; int kcal; char lactose[1]; }PRODUTO; typedef lista_produtos{ char lnome[50]; int lcod; char lcategoria[50]; int lkcal; char llactose[1]; }; void gerir_produto(); void criar_lista_de_compras (); char fproduto[]={"produto.txt"}; char fcategoria[]={"categorias.txt"}; char flista_produtos[]={"lista.txt"}; int main (){ menu(); return 0; } //Função para registar o produto int reg_prod(){ int menu_reg_prod; do { printf("\n OPCAO 0 - MENU "); printf("\n OPCAO 1 - REGISTAR PRODUTO"); printf("\n OPCAO 2 - CATEGORIA DO PRODUTO"); printf("\n OPCAO 3 - QUANTAS KCLAS?"); printf("\n OPCAO 4 - COM OU SEM LACTOSE?"); scanf("%d",&menu_reg_prod); fflush(stdin); if(menu_reg_prod==0){ return (0); } if (menu_reg_prod==1){ system("cls"); //funciona para apagar tudo o que já foi escrito printf("\n --REGISTAR PRODUTO --\n\n\n"); printf("\n PRODUTO: ", cont+1); scanf("%s", &p1[cont].nome); fflush(stdin); printf("\n CATEGORIA DO PRODUTO:", cont+1); scanf("%d",&p1[cont].categoria); fflush(stdin); printf("\n QUANTAS KCALS?", cont+1); scanf("%f", &p1[cont].kcals); fflush(stdin); cont++; printf("\n PRODUTO REGISTADO COM SUCESSO"); getch(); //serve para ler no teclado e imprimir no ecra system("cls"); } } while (menu_reg_prod==1); } int criar_cod(){ //cada produto vai ter 1 código FILE * fp int valor=0; fp=fopen("cod_produto.txt","c"); if(fp==NULL){ fp=fopen("id_produto.txt","z"); fprintf(fp,"%d",0); fclose(fp); fp=fopen("cod_produto.txt", "c"); } fscanf(fp,"%d",&valor); fclose(fp); fp=fopen("cod_produto,txt","c"); fprintf(fp,"%d",valor+1); fclose(fp); return valor+1; } //Lista de compras { FILE *fp; int lp; while(1){ system("cls"); printf(" \n"); printf("Escolha o índice para completar a sua acção[]: \n"); printf(" [1]Criar Lista\n"); printf(" [2]Escolher que produtos quer adicionar à lista \n"); printf(" [3]Gerir produtos \n"); printf(" [4]Sair \n"); scanf("%d", &lp); switch (ch) { case 1: criar_lista(); break; case 2: gerir_produtos (); break; case 4: exit(0); } } return (0); } void gerir_produtos(){ int lp; int voltar = 0; system("cls"); while (1){ printf("\n \n"); printf("\tProduto \n"); printf(" \n"); printf("1. Mostrar stock\n"); printf("2.Adicionar produto\n"); printf("0. Voltar ao Menu Inicial\n"); printf("Faça a sua escolha: "); scanf("%d", &lp); switch(lp){ case 1: mostrar_stock(); break; case 2: adicionar_produto(); break; case 0: voltar = 1; break; } if(voltar==1){ break; } else{ } } } void mostrar_stock(){ FILE * fp; struct produto t; int cod, encontrado=0; fp= fopen(fproduto, "rb"); printf("\n \n"); printf("\t Detalhes dos produtos \n"); printf("cod\tNome\tCategoria\tkcal\tLactose\n"); while(1){ fread(&t,sizeof(t),1,fp); //permite a leitura de um bloco de bytes num arquivo if(feof(fp)){ break; } printf("%d\t",t.cod); printf("%s\t",t.nome); printf("%s\t",t.categoria); printf("%f\t",t.kcal); printf("%s\t",t.lactose); } printf(" \n"); fclose(fp); } void adicionar_produto(){ FILE * fp; struct produto t1; fp=fopen(fproduto, "ab"); t1.cod=ciar_cod(); printf("\nQual é nome do produto?"); scanf("%s",t1.nome); printf("\nQual é a categoria do produto?"); scanf("%s",t1.categoria); printf("\nEste produto tem quantas kcals?"); scanf("%f",&t1.kcal); printf("\nO produto tem lactose?"); scanf("%s",t1.lactose); fwrite(&t1,sizeof(t1),1,fp); fclose(fp); } Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted January 7, 2017 at 12:19 AM Report Share #601873 Posted January 7, 2017 at 12:19 AM deve ser prai o decimo topico nesta semana com problemas graves neste tipo de estruturação. Afinal em que escola/universidade vocês estudam? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
GeniousMan Posted January 7, 2017 at 01:07 AM Author Report Share #601879 Posted January 7, 2017 at 01:07 AM Ja optei por outro algoritmo, que me parece mais simples so me da 1 pequeno erro consegue ajudar-me e dizer-me o porque de na lactose ele repetir o nome do produto? ID: 0 / NOME: leite / CATEGORIA: laticineos / LACTOSE(s/n): squeijo ID: 1 / NOME: queijo / CATEGORIA: laticioneos / LACTOSE(s/n): svaca ID: 2 / NOME: vaca / CATEGORIA: carne / LACTOSE(s/n): n PRODUTOS LISTADOS COM SUCESSO! Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted January 7, 2017 at 01:33 AM Report Share #601880 Posted January 7, 2017 at 01:33 AM não sei. Não acabaste de dizer que alteraste o código? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now