Ir ao conteúdo

Problema com struct que não concatena


leonardoadoado

Posts recomendados

Postado

Fiz um agorítimo para cadastro de produtos e posterior entradas de preços e quantidade desse protudo. Após a criação do produto, quando vou na tela de ENTRADA, não consigo localizar o produto cadastrado. Só consigo localizar o primeiro produto cadastrado.

O problema é que a struct que fiz não está concatenando em seguencia.

Nâo consegui resolver. Alguem pode me ajudar? aguardo.

#include<stdio.h>

#include<conio.h>

#include<conio2.h>

#include <stdlib.h>

#include <string.h>

main()

{

typedef struct inv

{

int codigo;

char Nproduto[10];

int quant;

int custo;

int icms;

int ipi;

int venda;

struct inv *proximo;

}ENTRA,*tlista;

tlista L = NULL;

int menu,X,cont=0,cont2=0,cod,quant=0,ENTR=0,quant2=0,cont3=0,cont4=0,custo,icms,ipi,venda,cont5=0;

char RESP = 's';

char nomeproduto[40];

do

{

clrscr();

gotoxy(20,2); printf("_________________________________");

gotoxy(20,3); printf(" INVENTARIO ");

gotoxy(20,4); printf("_________________________________");

gotoxy(20,5); printf("1 - Cadastrar produto ");

gotoxy(20,6); printf("2 - Entrada ");

gotoxy(20,7); printf("_________________________________");

menu = getch();

switch(menu)

{

case'1':

{ tlista P; tlista Q;

while(RESP == 's')

{

clrscr();

gotoxy(20,2); printf("CADASTRO DE PRODUTOS");

P = L;

while(P != NULL)

{

P = P->proximo;

}

cont = cont + 1;

Q = (tlista) malloc(sizeof(ENTRA));

Q->codigo = cont;

gotoxy(1,4); printf("Codigo %d",Q->codigo);

gotoxy(1,5); printf("Nome do produto: ");

scanf("%s",nomeproduto);

strcpy(Q->Nproduto, nomeproduto); ACHO QUE PROBLEMA ESTÁ NESSE TRECHO.

Q->proximo = NULL;

P = Q;

if(cont == 1)

{

L = P; NESSE TRECHO EU DEFINI A CABEÇA DE L

}

gotoxy(1,20); printf("\n\nDeseja cadastrar outro produto? (s) (n)");

RESP=getch();

}

}

break;

case'2':

{ tlista S; tlista R;

if(cont>0)

{

do

{

clrscr(); S = L;

R = L;

gotoxy(1,2); printf("Entrada de produtos");

gotoxy(35,4); printf("Produto [ ]");

gotoxy(1,7); printf("Quantidade [ ]");

gotoxy(1,8); printf("Preco de custo [ ]");

gotoxy(1,9); printf("ICMS [ ]");

gotoxy(1,10); printf("IPI [ ]");

gotoxy(1,11); printf("Preco de venda [ ]");

while(R != NULL)

{

R = R->proximo;

}

gotoxy(1,4); printf("Digite o codigo do produto: ");

scanf("%d",&cod);

while(S != NULL)

{

if(cod == S->codigo)

{

gotoxy(44,4); printf("%s",S->Nproduto);

gotoxy(30,7); scanf("%d",&quant);

gotoxy(30,8); scanf("%d",&custo);

gotoxy(30,9); scanf("%d",&icms);

gotoxy(30,10); scanf("%d",&ipi);

gotoxy(30,11); scanf("%d",&venda);

S->custo = custo;

S->icms = icms;

S->ipi = ipi;

S->venda = venda;

S->quant = S->quant + quant;

quant = 0;

cont2 = cont2 + 1;

ENTR = S->quant;

}

S = S->proximo;

}

if(cont2==0)

{

gotoxy(1,20); printf("\n\nCodigo não cadastrado, deseja continuar (s)(n)\n");

RESP=getch();

}

if(ENTR > 0)

{

gotoxy(1,20); printf("\n\nDeseja entrar com outro produto (s)(n)\n");

RESP=getch();

}

cont2 = 0;

ENTR = 0;

}while(RESP == 's');

}

else

clrscr(); {

gotoxy(1,18); printf("\n\nNão há produto cadastrado.");

}

}

break;

}

gotoxy(1,20);printf("\n\nDeseja retornar ao menu? (s) (n)\n");

RESP=getch();

}while(RESP=='s');

}

Postado

Gente, ninguem respondeu sobre minha dúvida, mas eu consegui identificar o erro.

O problema foi aqui. while(P != NULL)

{

P = P->proximo;

}

eu estava incrementando o P para um campo NULL. o correto é while(P->proximo != NULL)

Ninguem respondeu, mas valeu assim mesmo. pode fechar o tópico. abraços.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!