Bom dia galera, eu tava fazendo esse código aqui, e no meio do cadastro, OPÇÃO 1, quando seto o último valor no caso, depois de ler
o programa para sua execução.. Não consegui identificar o problema, vou postar o código aqui, alguém saberia dizer o problema ?
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<locale.h>#include<string.h>#define MAX 2#defineString50// APÓS O CADASTRO DO PRODUTO IMPRIMIR O ID NA TELA PARA O USUÁRIO PODER BUSCAR POSTERIORMENTE.typedefstruct{char mes[50];// Empilhar o Mês, Ex: Validade - Fabricação e Quando expira.char nome[50];float valorP;char categoria;// (A = Comida, B = Utensílios, C = Bebida)int topo;} p_produto;typedefstruct{//filaint id;int primeiro, ultimo;
p_produto produto;} registro[MAX];void iniciapilha(registro *p,int posicao){(*p)[posicao].produto.topo =-1;}int vazia(p_produto *p){if(p->topo ==-1)return(1);elsereturn(0);}int insere(char elemento[String], registro *p,int posicao){// String que guarda mes, Fila da Pilha, e a posição.if((*p)[posicao].produto.topo == MAX -1){
printf(" (!) ERRO: ","CADASTRO CHEIO!");return(0);}
strcpy((*p)[posicao].produto.mes[++((*p)[posicao].produto.topo)], elemento);return(1);}int iniciaFila(registro *f){(*f)->primeiro = MAX -1;(*f)->ultimo = MAX -1;}int addFila(int id, registro *fila){//if((*fila)->ultimo == MAX -1){(*fila)->ultimo =0;// Que é igual a I == 0}else((*fila)->ultimo)++;if((*fila)->ultimo ==(*fila)->primeiro){
printf("ERRO: %s\n","Estouro na Fila!");
exit(1);}(*fila)[(*fila)->ultimo].id = id;return1;}int buscaFila(int id_param, registro *fila){int i;for(i=0; i<MAX; i++){if((*fila)[i].id == id_param){
printf("\nPRODUTO: %s",(*fila)[i].produto.nome);
printf("\nPREÇO: %.2f",(*fila)[i].produto.valorP);
printf("\nCATEGORIA: %c",(*fila)[i].produto.categoria);
printf("\nVALIDADE: %s",(*fila)[i].produto.mes);return1;}}return0;}int menu(){int i =0, resp, idaux =0, successInsert;char lerString[50];
registro reg;
reg[0].id =0;int id_consulta;
printf("\n\t\tSISTEMA PARA CADASTRO DE 100 PRODUTOS\t\t\n");do{
printf("\nOPCAO 1 - CADASTRAR PRODUTO \nOPÇÃO 2 - LISTAR ID'S \nOPÇÃO 3 - BUSCAR PRODUTO \nOPÇÃO 4 - SAIR");
printf("\n\nINFORME OPCAO DESEJADA : \n");
scanf("%d",&resp);
system("cls");switch(resp){case1:
iniciaFila(®);
iniciapilha(®->produto, i);//Pega o topo da pilha pela posição do vetor da fila.
printf("\nInserindo Informações :\n");
printf("\nNOME DO PRODUTO :\n");
scanf("%s",reg[i].produto.nome);
fflush(stdin);
printf("\nPREÇO (R$) :\n");
scanf("%f",®[i].produto.valorP);
fflush(stdin);
printf("\nCATEGORIA (A = Comida, B = Utensílios, C = Bebida):\n");
scanf("%c",®[i].produto.categoria);
fflush(stdin);
printf("\n Validade (Ex: 01/08/2018):\n");
scanf("%s",lerString);//Setar esse valor chamando a função Insere() na Pilha.
fflush(stdin);
successInsert = insere(lerString,®->produto, i);if(successInsert){
idaux++;//setar uma função da Fila pra rodar essa rotina.
addFila(idaux,®);
printf("\nID DO PRODUTO CADASTRADO : %d", idaux);// *OBS: mudar o íncide de forma parametrizada
i++;
printf("Pressione qualquer tecla para voltar ao Menu...");
getch();
system("cls");break;}else{
strcpy(reg[i].produto.nome,"");
reg[i].produto.valorP =0.0;
reg[i].produto.categoria ="";
printf("\nInserção com excesso de espaço!\n");
printf("Voltando para Menu.\n");
getch();break;}case2:
printf("\tID | PRODUTO\n");for(i=0;i<MAX;i++){
printf("%d", reg[i].id);
printf(" | ");
printf("%s", reg[i].produto.nome);
printf("\n");}
printf("\n\n");
printf("Pressione qualquer tecla para voltar ao Menu...");
getch();
system("cls");break;case3:
printf("\nBUSCANDO DADOS . . . . . . .\n");
printf("\n\nINFORME O ID DO PRODUTO :\n");
scanf("%d",&id_consulta);if(buscaFila(id_consulta,®)){//setar função p fazer essa busca na fila. Em que trata se existe ou não ID.
buscaFila(id_consulta,®);}
printf("\n\nMES não CONSTA NO REGISTRO !\n");
printf("Aperte qualquer tecla para voltar pro Menu...");
getch();
system("cls");break;case4:
printf("\t\t**** Programa Encerrado! Volte sempre. ****");
printf("\n\n");break;default:
printf("Opcao Invalida. Tente novamente");return menu();}}while(resp !=4);}int main(){
setlocale(LC_ALL,"Portuguese");
menu();return0;}
Pergunta
Ozie
Bom dia galera, eu tava fazendo esse código aqui, e no meio do cadastro, OPÇÃO 1, quando seto o último valor no caso, depois de ler
o programa para sua execução.. Não consegui identificar o problema, vou postar o código aqui, alguém saberia dizer o problema ?
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.