/* Aluno: Diogo Rafael da Silva
Matricula: 20050145
Curso: Analise de Sistemas
*/
#include
#include
#include
#include
#include
#include
/* Aluno: Diogo Rafael da Silva
Matricula: 20050145
Curso: Analise de Sistemas
*/
typedef struct TipoItem{
int cod;
char ano[20],modelo[40],placas[20];
};
typedef struct TipoArvore {
TipoItem item;
TipoArvore *Fesq, *Fdir;
};
TipoArvore *Insere(TipoArvore *R1, TipoArvore *R2, TipoItem X)
{
if(!R2)
{
R2 = (TipoArvore *) malloc(sizeof(TipoArvore));
R2 -> Fesq = NULL;
R2 -> Fdir = NULL;
R2 -> item = X;
if (!R1) return R2; //primeiro insert
if (X.cod < R1 -> item.cod) R1->Fesq = R2; //menor vai p/esq
else R1 -> Fdir = R2; //maior vai p/dir
return R2;
}
if (X.cod == R2 -> item.cod)
{
printf("\nERRO: Ja existe um codigo igual!");
return R2;
}
if (X.cod < R2 -> item.cod) Insere(R2,R2->Fesq,X);
else Insere(R2,R2->Fdir,X);
return R2;
}
/* Aluno: Diogo Rafael da Silva
Matricula: 20050145
Curso: Analise de Sistemas
*/
void Imprime(TipoArvore * R, int L)
{
if (!R){
return;} //Arvore est vazia
Imprime(R -> Fesq,L + 1);
int i;
printf("\n\n\n ***********************************************************************\n");
printf("\n\t ---------MOSTRANDO TODA A LISTA---------");
printf("\n\t --- Total de produtos da lista: %d --- ",i+1);
printf("\n\n ***********************************************************************\n");
printf("\n ************* Veiculo *************\n");
printf("\tCodigo: %d\n",R->item.cod);
printf("\tModelo: %s\n",R->item.modelo);
printf("\tAno: %s\n",R->item.ano);
printf("\tPlacas: %s\n",R->item.placas);
i++;
Imprime(R -> Fdir,L+1);
} //Fim da funcao Imprime
/* Aluno: Diogo Rafael da Silva
Matricula: 20050145
Curso: Analise de Sistemas
*/
TipoArvore * Pesquisa(TipoArvore * R)
{
clrscr();
int cod;
if(!R) return R; //Nao encontrado
printf("\n\nConsulta por Codigo: ");
scanf("%d",&cod);
printf("\n*****************************************************************************");
printf("\n\t\t\t------ RESULTADO DA PESQUISA ------!!!");
printf("\n*****************************************************************************");
while (R -> item.cod != cod)
{
if (cod < R -> item.cod) R=R->Fesq;
else R=R->Fdir;
if (R == NULL) break;
} //fim do while
printf("\tCodigo: %d\n",R->item.cod);
printf("\tModelo: %s\n",R->item.modelo);
printf("\tAno: %s\n",R->item.ano);
printf("\tPlacas: %s\n",R->item.placas);
return R;
}
/* Aluno: Diogo Rafael da Silva
Matricula: 20050145
Curso: Analise de Sistemas
*/
void main()
{
clrscr();
TipoArvore * Raiz = NULL;
TipoArvore * Pesq;
char op,op2,ope;
int cod1;
int b = 0;
do {
clrscr();
printf("\n-------------------------------------------");
printf("\n\n\tESCOLHA UMA DAS OPCOES ABAIXO\n\n");
printf("\n\nDigite \"i\" para incluir um novo dado");
printf("\n\nDigite \"r\" para retirar um dado");
printf("\n\nDigite \"a\" para alterar o conteudo de um dado");
printf("\n\nDigite \"p\" para pesquisar um dado");
printf("\n\nDigite \"e\" para esvaziar o conteudo da arvore");
printf("\n\nDigite \"m\" para mostrar o conteudo da arvore");
printf("\n\nDigite \"x\" para sair do programa");
printf("\n\n-----------------------------------------");
printf("\n\nDigite sua op‡ao: ");
op = getche();
op=tolower(op);
switch(op) {
case 'i':
clrscr();
printf("\n\t\tINCLUINDO VEICULO\n");
TipoItem item;
printf("Codigo do veiculo: ");
scanf("%d",&item.cod);
printf("\nModelo: ");
fflush(stdin);
gets(item.modelo);
printf("\nAno: ");
scanf("%s",&item.ano);
printf("\nPlacas: ");
scanf("%s",&item.placas);
if (!(strcmp(item.modelo,NULL))){
printf("\n ***********************************************************************\n");
printf("\n\t\t NAO FOI POSSIVEL CADASTRAR:");
printf("\n\t\t MOTIVO: EXISTEM CAMPOS EM BRANCO");
printf("\n\n ***********************************************************************\n");
getch();
break;
}
if(!Raiz)Raiz=Insere(Raiz,Raiz,item);
else Insere(Raiz,Raiz,item);
printf("\n ***********************************************************************\n");
printf("\n\t\t DADO CADASTRADO COM SUCESSO!!!");
printf("\n\n ***********************************************************************\n");
getch();
break;
case 'm':
clrscr();
Imprime(Raiz,NULL);
getch();
break;
case 'p':
clrscr();
Pesquisa(Raiz);
getch();
break;
case 'e':
clrscr();
if(Raiz == NULL){
printf("A ARVORE JA ESTA VAZIA!!");
getch();
}
else{
printf("Voce deseja esvazia a arvore: ");
scanf("%s",&ope);
ope=tolower(ope);
if (ope == 's' /*|| ope == 'S'*/){
Raiz = NULL;
printf("\n ***********************************************************************\n");
printf("\n\t\t ARVORE ESVAZIADA COM SUCESSO!!! ");
printf("\n ***********************************************************************\n");
getch();
}
}
break;
case 'r':
clrscr();
printf("\nEntre com codigo a retirar: ");
scanf("%d",&cod1);
//Retira(Raiz,cod1);
getch();
break;
case 'x':
char resp;
clrscr();
printf("\nVoce realmente deseja sair ? (s/n)\t");
fflush ( stdin ) ;
scanf("%c",&resp);
resp=(tolower(resp));
if (resp=='s'){
b=2;
break;
}//if
//else {}
fflush(stdin);
break;
} /*FECHA SWITCH */ }while (!b);
}
/* Aluno: Diogo Rafael da Silva
Matricula: 20050145
Curso: Analise de Sistemas
*/
               (
geocities.com/br/di0_s)                   (
geocities.com/br)