#include #include #include 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; }