Ir ao conteúdo
  • Cadastre-se

C RESOLVIDO Struct para Controle de estoque


Posts recomendados

Galera eu estou com dificuldade de achar aonde esta meu erro no codigo , eu estou iniciando agora no aprendizado de programação em C , então nao manjo quase nada.Enfim , a ideia que tive com o programa era fazer o Usuario ter 2 opção inicial , 1 - cadastrar produto , 2 - acessar estoque. Como pode ver no programa usei Switch case , if com um contador para limitar o numero de cadastro e for para ir contando os produto e criando assim produto[1] ,[2], pelo menos é isso que pensei que aconteceria , o programa funcionar normalmente no primeiro IF , aonde faz os cadastro , mas quando eu entro no CASE 2: que serviria para mostrar o estoque , quando eu tento colocar um prinft("Codigo do produto",Produto[1].cod); ele disse que esse Produto[1] nao existe, eu gostaria de saber se existe alguma forma de fazer essa sintaxe que fiz valer . o Codigo é esse:

#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
#include <conio.h>
int contador=0;
int opc;
int i;
struct produtos
	{
	    char cod[50];
	    float valor;
	    int quantArma;
	    int quantVend;
	    char descProd[100];
	  };   
			int main(void){

			int menu;
			setlocale(LC_ALL, "Portuguese");
			inicio:
	  	
	  
			printf("--------Menu de Estoque--------\n\n\n");
			printf("----Escolha uma das opção:----\n\n");
			printf("1-Cadastrar Produto\n2-Consultar Produtos\n");
			fflush(stdin);
			scanf("%d",&opc);
			system("cls");     
			switch(opc)
{
    
case 1:
	if (contador<=9)
	{
	for (i=0;i<10;i++){
		struct produtos Produto[i];
		
		printf("------Cadastrando Produto-------\n\n\n");	
	
		
		printf("Codigo do Produto---:");
		fflush(stdin);
		fgets(Produto[i].cod,50,stdin);
		printf("\nValor do protudo---R$:");
		scanf("%f",&Produto[i].valor);
		printf("\nQuantidade no Estoque---:");
		scanf("%d",&Produto[i].quantArma);
		printf("\nQuantidade Vendida---:");
		scanf("%d",&Produto[i].quantVend);
		printf("\nDescricao do Produto---:");
		fflush(stdin);
		fgets(Produto[i].descProd,100,stdin);
		contador ++;
		printf ("Produto Cadastrado\n\nVoltando para o inicio\n\n");
		goto inicio;
		
	}
}else{
	printf("\nNão é possivel adicionar mais produtos!!!\n\n\nVoltando para o menu\n");
	goto inicio;
}
case 2:
	printf("-----ESTOQUE-----");
	if (contador==1){
		printf("\nProduto 1:\n");
		printf("Codigo do Produto---:%s",Produto[1].cod);
	}


}
	
}
	

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Coloque a variável produtos no inicio do main()

int main(void)
{
    struct produtos Produto[i];
    int menu;
    setlocale(LC_ALL, "Portuguese");
inicio:
 .
 .
 .
 .

Quando se cria uma variável dentro de um bloco essa variável {...}, essa variável só é visível dentro do mesmo bloco.

Erro de compilação só tem esse mesmo, agora veja melhor seus usos do goto, sempre dá pra tirar os GOTOs usando funções uma lógica melhor.

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Vitor Hugo Bonato Ladislau    como disse o @CiroboyBR   seu código está bom precisa retirar esse goto e organizar melhor , então seu código ficaria assim :

#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
#include <conio.h>
int contador=0;
int opc;
int i;
char cd[10],op;
struct produtos
{
    char  cod[50];
    float valor;
    int   quantArma;
    int   quantVend;
    char  descProd[100];
};
struct produtos Produto[100];
int main(void){
    int menu;
    setlocale(LC_ALL, "");
    do{
    inicio:
        system("cls");
        printf("--------Menu de Estoque--------\n\n\n");
        printf("----Escolha uma das opção:----\n\n");
        printf("1-Cadastrar Produto\n2-Consultar Produtos\n");
        printf("3-Lista Todos\n");
        printf("4-Sair\n     ");
        fflush(stdin);
        scanf("%d",&opc);
        system("cls");
        switch(opc){
            case 1:
                if (contador < 10){
                    do{
                        op='n';
                        printf("------Cadastrando Produto-------\n\n\n");
                        printf("Codigo do Produto---:");
                        fflush(stdin);
                        gets(Produto[contador].cod);
                        printf("\nValor do protudo---R$:");
                        fflush(stdin);
                        scanf("%f",&Produto[contador].valor);
                        printf("\nQuantidade no Estoque---:");
                        fflush(stdin);
                        scanf("%d",&Produto[contador].quantArma);
                        printf("\nQuantidade Vendida---:");
                        fflush(stdin);
                        scanf("%d",&Produto[contador].quantVend);
                        printf("\nDescricao do Produto---:");
                        fflush(stdin);
                        gets(Produto[contador].descProd);
                        contador ++;
                        printf ("Produto Cadastrado\n");
                        /*goto inicio;*/
                        printf("Quer Fazer Mai Algum Cadastro S/N ");
                        fflush(stdin);
                        scanf("%c",&op);
                        if(contador > 9){
                            printf("\nNão é possivel adicionar mais produtos!!!\n\n\nVoltando para o menu\n");
                            op='n';
                        }
                    }while(op=='s');
                }
                break;
            case 2:
                printf("-----ESTOQUE-----\n");
                printf("Digite O Codigo Do Produto Quer voce Quer Encontrar ");
                fflush(stdin);
                gets(cd);
                for(i=0;i<contador;i++){
                    if(strcmp(cd,Produto[i].cod)==0){
                        printf("Codigo ------> %s\n",Produto[i].cod);
                        printf("Valor -------> %.2f\n",Produto[i].valor);
                        printf("Quantidade --> %d\n",Produto[i].quantArma);
                        printf("Vendida -----> %d\n",Produto[i].quantVend);
                        printf("Descricao ---> %s\n",Produto[i].descProd);
                        printf("   Tecle");
                        getch();
                        break;
                    }
                }
                break;
            case 3:
                printf("Vamos Listar Todos Os Produtos\n");
                for(i=0;i<contador;i++){
                    printf("Codigo ------> %s\n",Produto[i].cod);
                    printf("Valor -------> %.2f\n",Produto[i].valor);
                    printf("Quantidade --> %d\n",Produto[i].quantArma);
                    printf("Vendida -----> %d\n",Produto[i].quantVend);
                    printf("Descricao ---> %s\n    Tecle\n",Produto[i].descProd);
                    getch();
                }
                break;
        }
    }while(opc!=4);
}

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...