Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Vitor Hugo Bonato Ladislau

C RESOLVIDO Struct para Controle de estoque

Recommended Posts

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);
	}


}
	
}
	

 

Editado por Vitor Hugo Bonato Ladislau
post resolvido
  • Curtir 1

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • @CiroboyBR Nossa , eu quebrando a cabeça e era so isso , muito obrigado . Sobre o Goto vou procurar formas diferente então , valeu

    • Curtir 1

    Compartilhar este post


    Link para o post
    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

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • @devair1010 

    7 minutos atrás, devair1010 disse:

    do

    Nao conhecia essa forma de utilização , e o codigo , vi que usou for para ir imprimindo , sem precisar repetir os comandos , nao tinha pensando nisso . Muito obrigado cara , ajudou mt

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×