Ir ao conteúdo

Posts recomendados

Postado

Bom dia, estou com um problema em meu codigo, 

 

Nesse projeto, iremos armazenar registro de vendas diário de um supermercado em uma ABB. Cada registro de compras tem os seguintes dados: - Data da venda: adotaremos o formato aaaa/mm/dd. Esta maneira facilita a comparação de datas. Você poderá armazenar como string (vetor de caracteres) ou inteiro com 8 dígitos (20190301 para 1º de março de 2019). - cpf do vendedor - lista de itens: deverá ser uma lista encadeada de palavras. ex: leite -> pao -> doce. Cada item é apenas uma palavra (sem acentos, sem espaço). Regras: - Os registro de vendas serão indexados pela data. Isto é, a data da venda será a chave. - Estamos considerando que todas as vendas do dia estão armazenadas em um único registro. Desta forma, considere sua árvore não terá chaves/datas repetidas. Na vida real, consideraríamos data+hora como chave e permitiríamos repetições. - A lista de item pode ser implementada como desejar (isto é, escolha seu método de inserção - no início, meio ou fim), desde que seja uma lista encadeada.

 

Eu não consigo registrar mais de duas venda que ele da erro, queria saber se alguém consegue me ajudar.

 

Até ai já agradeço.<3TestesTrabalho2.txt

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct produto{
	char p[20];
	struct produto *prox;
};

struct noVenda {
     int data;
	 char cpf[14];
//	 char produto[20]; 	
	 struct produto prod;
	 struct produto *inicio;
     struct noVenda *esq , *dir , * pai;  
};

typedef struct noVenda *noVenda;	
typedef struct produto *produto;


	//Contagem de nos
int numero_nos ( noVenda raiz) {
	if ( (raiz) == NULL )
		return 0;
return numero_nos (raiz-> esq ) + numero_nos (raiz-> dir ) + 1;
 }

  	//Valor Minimo
noVenda minimo ( noVenda raiz ) {
  if ( raiz== NULL || raiz-> esq == NULL )
  return raiz;
return minimo (raiz-> esq);
}

	//Ancestral da direita
noVenda ancestral_a_direita ( noVenda raiz) {
  	if (raiz == NULL )
		return NULL ;
  	if (raiz->pai == NULL || raiz->pai->esq == raiz)
		return raiz-> pai ;
  	else
  		return ancestral_a_direita (raiz-> pai);
}
	//Sucessor
noVenda sucessor ( noVenda raiz) {
  if (raiz-> dir != NULL )
  	return minimo (raiz->dir);
  else
  	return ancestral_a_direita (raiz);
}


void criaProduto(produto *inicio){
	produto novoProd;
//	char auxproduto[20];
	produto aux = NULL;
	
	printf("Nome do produto:");
  	scanf("%s",&novoProd->p);
  	fflush(stdin);
  //	strcpy (novoProd->prod.p,auxproduto);
	
	if((*inicio) == NULL){
	(*inicio) = novoProd;	
	printf("%s", (*inicio)->p);
	getch()	;
	}else{
		aux = (*inicio);
		while(aux->prox != NULL){
			aux = aux->prox;
		}
			aux->prox= novoProd;	
  		printf("%s", (*inicio)->p);
}
}

void percorreProduto(produto *inicio){
	produto aux = NULL;
	
	
		aux =(*inicio);
		while(aux!=NULL){
		printf("%s", aux->p);
		aux = aux->prox;
	}
			
}

	//inserir
noVenda inserir ( noVenda *raiz , int datav ) {	
  noVenda novo ;
  char auxcpf[14];
 // char auxproduto[20];
  
  	if ((*raiz) == NULL ) {
  		novo = (noVenda) malloc (sizeof(struct noVenda)); 
  		novo -> esq = NULL;
  		novo ->dir = NULL ;
  	//	novo ->produto = NULL;
  		novo -> data = datav ;
  		novo -> inicio = NULL ;
 	
	 	printf("CPF do Vendedor:");
 		scanf("%s",&auxcpf);
		fflush(stdin);
  		strcpy (novo->cpf,auxcpf);
  		
  		criaProduto(&(novo)->inicio);
  
  //		printf("Nome do produto:");
  //		scanf("%s",&auxproduto);
  //		fflush(stdin);
  //		strcpy (novo->produto->produto,auxproduto);
  		
  	return novo ;
  	}
  	
  	if ( datav < (*raiz) -> data ){
   		(*raiz) -> esq = inserir (&(*raiz)->esq , datav );
   		(*raiz)->esq->pai=(*raiz);
		}
  	else{
  		(*raiz) -> dir = inserir (&(*raiz) ->dir , datav );
  		(*raiz)->dir->pai=(*raiz);
		}
	return (*raiz );
}

void buscaInsere ( noVenda *raiz, int datav) { 
  if ( (*raiz)== NULL || datav == (*raiz)->data )
  	 criaProduto(&(*raiz)->inicio);
  if ( datav < (*raiz)-> data )
	 buscaInsere (&(*raiz)->esq, datav ); 
  else
	 buscaInsere (&(*raiz)->dir , datav );
  }
  
noVenda buscar ( noVenda *raiz, int datav) { 
  if ( (*raiz)== NULL || datav == (*raiz)->data )
  	 return (*raiz );
  if ( datav < (*raiz)-> data )
	 return buscar (&(*raiz)->esq, datav ); 
  else
	 return buscar (&(*raiz)->dir , datav );
  }
  
noVenda minimoi( noVenda raiz ) {
while ( raiz != NULL && raiz -> esq != NULL )
raiz = raiz -> esq ;
return raiz;
}
  
int main(int argc, char *argv[]) {
	noVenda raiz = NULL;
	noVenda b;
	noVenda s;
	noVenda u;
	noVenda r;
	int t;
	int datav;
	int opca;
	
	

	while(opca != 5){
		
		system("cls");
		
		printf("----------Menu----------\n\n");
		
		printf("1-Registar Venda\n");
		printf("2-Consultar Venda\n");
		printf("3-Mostrar Vendas\n");
		printf("4-Sair\n\n");
		
		
		printf("Digite opcao:");
		scanf("%d",&opca);
		fflush(stdin);
		system("cls");


		if(opca==1){
			
				printf("Digite data da venda:");
				scanf("%d",&datav);
				fflush(stdin);
				system("cls");
				b=buscar(&raiz, datav);

			if(b==NULL){

			printf("**********Novo Registro**********\n\n");
			printf("Data da Venda:");
			printf("%d\n",datav);
			raiz=inserir(&raiz, datav);
			system("cls");
			printf("Registro inserido\n");
			printf("%s", raiz->inicio->p);
			}else{
			printf("Registro ja existe\n");
			buscaInsere(&raiz, datav);
			printf("Produto inserido\n");
	//		percorreProduto(&(b)->inicio);
			//printf("Data de Registro ja existe");
			system("cls");
			}
			getchar();
			system("cls");
			}
			
		if(opca==2){
		
			printf("Digite data da consulta:");
			scanf("%d",&datav);
			fflush(stdin);
			system("cls");
				
			b=buscar(&raiz, datav);
		
				if(b!=NULL){
					printf("------------------------------\n");		
					printf("Data:");
					printf("%d\n",b->data);
					printf("CPF do vendedor:");
					printf("%s\n",b->cpf);
					printf("Nome do produto:");
					printf("%s\n",b->prod.p);

				s=sucessor(b);
		
					if(s!=NULL){
					printf("------------------------------\n");
					printf("Data:");
					printf("%d\n",s->data);
					printf("CPF do vendedor:");
					printf("%s\n",s->cpf);
					printf("Nome do produto:");
			//		printf("%s\n",s->produto);
				
				s=sucessor(s);
		
				if(s!=NULL){
					printf("------------------------------\n");	
					printf("Data:");
					printf("%d\n",s->data);
					printf("CPF do vendedor:");
					printf("%s\n",s->cpf);
					printf("Nome do produto:");
			//		printf("%s\n",s->produto);
					printf("------------------------------");			
				}
				}
					getch();
				}else{
					printf("Registro nao existe");
					getch();
			}
}
	
	
		if(opca==3){
					
		t= numero_nos(raiz);
		
		s=minimo(raiz);
		
		do{
					
			if(s!=NULL){
					printf("------------------------------\n");		
					printf("Data:");
					printf("%d\n",s->data);
					printf("CPF do vendedor:");
					printf("%s\n",s->cpf);
					printf("Nome do produto:");
			//		printf("%s\n",s->produto);
					printf("------------------------------\n");
				t--;
					s=sucessor(s);
			}else{
				printf("Nao existem registros");
			}
			
			}while(t!=0);		
			getch();		
		}
			
}
return 0;
}
	

 

 

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

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!