Ir ao conteúdo
  • Cadastre-se
rafaelsteigleder

Exercício cadastro de produtos erro

Recommended Posts

Boa noite pessoal!

 

estou com um problema que nao estou conseguindo identificar onde estou errando, gostaria de ver se podem me auxiliar

// modelo de 26.02.2014
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <dos.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
#include <ctype.h>
#include <locale.h>
#include <math.h>
// rotina para podermos utilizar cor do texto (textcolor)
// e cor do fundo (textbackground) em um único comando.
// para chama-la de dentro do programa use  cores(x,y);
// onde x = numero da cor do texto  (textcolor)
//      y = numero da cor do fundo  (textbackground)
void cores(int ForgC, int BackC){   // para chamar
     WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);;
     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
     return;
}
// esta rotina é só para a cor do texto
void textcolor(int newcolor){
   CONSOLE_SCREEN_BUFFER_INFO csbi;
   GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
   SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
     (csbi.wAttributes & 0xf0) | newcolor);
}
// rotina para podermos utilizar o comando gotoxy(linha,coluna)
// sem precisar carregar bibliotecas não disponíveis na Feevale.
void gotoxy(int x, int y) {
  COORD c;
  c.X = x - 1;
  c.Y = y - 1;
  SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}
void imp_autor(){
  setlocale(LC_ALL, "Portuguese");
  gotoxy(27,12);
  textcolor(10);
  printf("RAFAEL HENRIQUE STEIGLEDER");
  Sleep(500);
  system("cls"); // comando para limpar o conteúdo da tela.
  textcolor(15);
}

// -------------- AQUI COMEÇA NOSSO PROGRAMA PROPRIAMENTE DITO -----------------
//valor.estoque+valr.compra

typedef struct produto{
     int cod_produto[100];
    long int qnt_produto[1000];
    int est_minimo[0];
    char nome_produto[200];
    float preco_medio;
   }Produto;
   
   //Declaração de funções.
   Produto* inserir_item(Produto* primeiro);
   Produto* listar_item(Produto* primeiro);
   Produto* entrada_item(Produto* primeiro);
   void saida_item(Produto* primeiro);
   Produto* prox;
int main(){
    Produto *primeiro= NULL;
   char opcao;
   int prox;
    while(opcao!='s')   
   {  
     //Menu de opções 
      printf(" %c----------------------------------------------------------------------------%c\n",201,187);
      printf(" | ");printf("\t\t\t     CADASTRO DE PRODUTOS");printf("\t\t\t      |\n");
      printf(" %c----------------------------------------------------------------------------%c\n",200,188);
      printf("\t       %c----------%c\t\t\t\t       ",201,187);
      printf("\t\t\t               |   MENU   ");printf("|\t\t\t\t      \n");
      printf("   %c----------------%c--------------%c----------------%c \n",201,200,188,187);
      printf("   | <1>  Cadastrar um Produto                           |\n");
      printf("   |-----------------------------------------------------|\n");
      printf("   | <2>  Listar produtos cadastrados                    |\n");      
      printf("   |-----------------------------------------------------|\n");
      printf("   | <3>  Consultar dados de um produto                  |\n");      
      printf("   |-----------------------------------------------------|\n");
      printf("   | <4>  Processar um produto de mercadoria do estoque  |\n"); 
      printf("   |-----------------------------------------------------|\n");
      printf("   | <5>  Processar uma entrada de mercadoria do estoque |\n"); 
      printf("   |-----------------------------------------------------|\n");
      printf("   | <6>  Sair                                           |\n");
      printf("   %c-----------------------------------------------------%c",200,188);
      printf("\n\n\n\n");
      
      
      //Lendo a opcao do menu   
      fflush(stdin);
      opcao= getch(); 
      
      //Menu de opções
      switch(opcao)
      {
         case '1':   
         
              //Inserindo os restaurantes.
              fflush(stdin);
              system("cls");
              printf(" %c----------------------------------------------------------------------------%c\n",201,187);
              printf(" | ");printf("\t\t\t          NOVO PRODUTO     ");printf("\t\t\t      |\n");
              printf(" %c----------------------------------------------------------------------------%c\n",200,188);
              primeiro= inserir_item(primeiro);
         getch();
         system("cls"); 
         break;
         
         case '2':   
                
              //Listando os restaurantes.
              system ("cls");
              printf(" %c----------------------------------------------------------------------------%c\n",201,187);
              printf(" | ");printf("\t\t\t     LISTA DE PRODUTOS    ");printf("\t\t\t      |\n");
              printf(" %c----------------------------------------------------------------------------%c\n",200,188);
              listar_item(primeiro);
         getch();
         system("cls");
         break;
         
         case '3':   
            
              //Excluindo restaurantes da lista.
              system ("cls");
              printf(" %c----------------------------------------------------------------------------%c\n",201,187);
              printf(" | ");printf("\t\t\t        EXCLUIR CADASTROS");printf("\t\t\t      |\n");
              printf(" %c----------------------------------------------------------------------------%c\n",200,188);
              primeiro= entrada_item(primeiro);
         getch();
         system("cls");
         break;
         case '4':   
           
              //Alterando restaurantes da lista. 
              system ("cls");
              printf(" %c----------------------------------------------------------------------------%c\n",201,187);
              printf(" | ");printf("\t\t\t       ALTERAR CADASTRADOS");printf("\t\t\t      |\n");
              printf(" %c----------------------------------------------------------------------------%c\n",200,188);
              saida_item(primeiro);
         getch();
         system("cls");
         break;
         
         case '6':   
               
              //Artifício para sair do programa.
              opcao='6';
         break;
         
         default:     
              //Artifício que previne a situação de um usuário qualquer, digitar uma opcão inexistente no menu.
              system("cls");        
 
         break; 
}
}
}
Produto* inserir_item (Produto *primeiro) { 
     
     Produto item;
     Produto *atual= primeiro;
     char identificador= 'F';
     
     //Lendo as informações do restaurante.
     printf("  Código do Produto: ",162);
     scanf("%u",&item.cod_produto);printf ("\n");
     printf("  Quantidade do Produto ",162);
     scanf("%u",&item.qnt_produto);printf ("\n");
     printf("  Estoque mínimo ",162);
     scanf("%u",&item.est_minimo);printf ("\n");
     printf("  Nome do Produto: ");
     fflush (stdin); fgets(item.nome_produto, 200, stdin); printf ("\n");
     printf("  Preço Médio ",162);
     scanf("%f",&item.preco_medio);printf ("\n");
     
     //Verificando se o cadastro já existe.
     for(atual=primeiro; atual!=NULL; atual=atual->prox){
        if(atual->cod_produto==item.cod_produto){
            identificador= 'V'; 
            break;
        }  
     }
if(identificador!='V' && (strlen(item.nome_produto)!=1)){
         //Alocando os espaços e guardando as informações do restaurante.
         Produto* NovoProduto=(Produto*) malloc (sizeof(Produto));       
         strcpy(NovoProduto->nome_produto, item.nome_produto);
         NovoProduto->prox= primeiro;
         printf("  Cadastro realizado com sucesso.");
         printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         return NovoProduto;    
     }else{
         printf("  Cadastro inv%clido.",160);
         printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
         return primeiro;
     }
}
void produto_item (Produto* primeiro){
     Produto* atual;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
     
     //Imprimindo os restaurantes da lista, e suas repectivas informações.
     for(atual= primeiro ; atual!= NULL; atual= atual->prox){
        printf("\n  Código do produto: ",162 );
        printf("%u", atual->cod_produto);
        printf("\n  Quantidade do Produto: ",162 );
        printf("%u", atual->qnt_produto);
        printf("\n  Estoque Mínimo: ",162 );
        printf("%u", atual->est_minimo);
        printf("\n  Nome do Produto ");
        printf("%s", atual->nome_produto);
        printf("\n  Preço médio ",162 );
        printf("%u", atual->preco_medio);
        printf("\n\n");
     }
     if(primeiro==NULL)
        printf("  Nenhum produto cadastrado.");
     printf("\n\n  PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
}


Quanto compilo e tento rodar o programa ele da a seguinte mensagem:

In function 'Produto* inserir_item(Produto*)':

[Error] 'Produto' has no member named 'prox'

[Error] 'Produto' has no member named 'prox'

In function 'void produto_item(Produto*)':

[Error] 'Produto' has no member named 'prox'

 

Como posso identificar o prox?

Editado por dif
usar o botão code para códigos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tá usando prox como se fosse um membro da estrutura Produto. Mas na sua declaração não tem nenhuma variável chamada prox.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Produto* inserir_item(Produto* primeiro);
   Produto* listar_item(Produto* primeiro);
   Produto* entrada_item(Produto* primeiro);
   void saida_item(Produto* primeiro);
   Produto* prox;//Erro

você declarou o ponteiro prox fora do TAD Produto e ele deve ficar dentro do TAD

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

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 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

×