Buscar

Exemplo de árvore binaria (Processos Advogado)

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

#include <stdio.h>
#include<stdlib.h>
#define C 5
#define N 3
typedef struct {
 
 int id;
 char nome[40];
 char CPF[11];
 char RG[10];
 char estadocivil[12];
 char contato[10];
 char profissao[30];
}Cliente; //defino a estrutura do cliente
typedef struct {
 
 int pasta;
 int cod;
 char data[8];
 char area[15]; //civil, trabalhista, criminal, tributaria
 char vara[40];
 char advogado[40];
 Cliente cliente;
 char contrario[40];
 char advcontrario[40];
 float valoracao;
 
}Processo; // defino estrutura do processo
typedef struct {
 
 Processo processo[N];
 int prim, ult;
 
}Acoes;
// -------------------------------------------------------------------------------- termina estruturas
void CriarAcoes(Acoes *X){
 
 X->prim=0;
 X->ult=X->prim;
} //cria a lista acoes que armazena os clientes
int VerificaVazia(Acoes X){
 
 return(X.prim==X.ult); // retorna true se tiver vazia 
}
int VerificaCheia(Acoes X){
 
 return(X.ult==N); // retorna true se tiver cheia 
}
// -------------------------------------------------------------------------------- termina verificacoes
void InserirCliente(Cliente p1){ //inserindo um cliente num processo ele exclui o cliente anterior. P eh o retorno de InserirProcesso que guarda a posicao do cliente.
 
 printf("Digite um codigo para o cliente: \n");
 scanf("%d",&p1.id);
 printf("Digite o nome do cliente:\n ");
 scanf("%s",&p1.nome);
 printf("Digite o RG do cliente:\n ");
 scanf("%s",&p1.RG);
 printf("Digite o CPF do cliente:\n ");
 scanf("%s",&p1.CPF);
 printf("Digite a profissao do cliente:\n ");
 scanf("%s",&p1.profissao);
 printf("Digite o estado civil do cliente:\n ");
 scanf("%s",&p1.estadocivil);
 printf("Digite o contato do cliente:\n ");
 scanf("%s",&p1.contato);
 
 }
 
		
 
void InserirProcesso(Acoes *X, Processo p1){
 int A;
 int P=X->prim;
 Cliente ct;
 if(VerificaCheia(*X))
 printf("Lista cheia, remova processo!\n");
 else{
 		P=X->prim;
 while((P!=X->ult)&&(p1.pasta>X->processo[P].pasta))
 P++;
		InserirCliente(ct); // ------------- para teste comentar
		X->processo[P].cliente=ct;
		if((P<X->ult)&&(p1.pasta!=X->processo[P].pasta)){
		 for(A=X->ult;A>P;A--){
 	X->processo[A]=X->processo[A-1];
 X->processo[P]=p1;
 X->ult++;
 } }else if(P==X->ult){
 	X->processo[P]=p1;
 	X->ult++;
 } else{
				printf("Codigo nao existe!\n\n");
			}
 }
 }
void LerProcesso(Processo p1){
	
	printf("Digite o codigo da pasta:\n");
 scanf("%d",&p1.pasta);
 printf("Digite o codigo do processo:\n");
 scanf("%d",&p1.cod);
 printf("Digite a area do processo:\n");
 scanf("%s",&p1.area);
 printf("Digite o advogado do caso:\n");
 scanf("%s",&p1.advogado);
 printf("Digite a data de cadastro do processo:\n"); 
 scanf("%s",&p1.data);
 printf("Digite a vara do processo:\n");
 scanf("%s",&p1.vara);
 printf("Digite o valor da acao:\n");
 scanf("%f",&p1.valoracao); 
 printf("Digite o contrario da acao:\n");
 scanf("%s",&p1.contrario);
 printf("Digite o advogado contrario:\n");
 scanf("%s",&p1.advcontrario);
}
 
void RemoveProcesso(Acoes *X, Processo *p1){ //as pessoas sao vinculadas ao processo
 int A;
 int P=X->prim;
 int pt;
 printf("Digite o numero do processo a remover: \n");
 scanf("%d",&pt);
 if(VerificaVazia(*X)){
 printf("Lista vazia, insira pasta\n");
 } else{
 while((P<X->ult)&&(pt>X->processo[P].pasta)){
 P=P+1;
 }
 if((P==X->ult)||(X->processo[P].pasta != pt)){
 printf("Elemento nao encontrado");
 } else{
 *p1=X->processo[P];
 for(A=P;A<X->ult;A++)
 X->processo[A]=X->processo[A+1];
 X->ult--;
 printf("\nElemento removido!\n\n",p1->pasta);
 }
 }
}
void VisualisarProcesso(Processo p1){
 
 printf("\nNumero da pasta do processo: %d\n",p1.pasta);
 printf("Data de protocolo: %s\n",p1.data);
 printf("Nome do cliente: %s\n",p1.cliente.nome);
 printf("RG do cliente: %s\n",p1.cliente.RG);
 printf("CPF do cliente: %s\n",p1.cliente.CPF);
 printf("Area da aчуo: %s\n",p1.area);
 printf("Vara locada: %s\n",p1.vara);
 printf("Advogado do cliente: %s\n",p1.advogado);
 printf("Valor da acao: %f\n",p1.valoracao);
 printf("Pessoa contraria: %s\n",p1.contrario);
 printf("Advogado contrario: %s\n",p1.advcontrario);
}
void BuscaProcesso(Acoes *X, Processo *p1){
 int A;
 int P=X->prim; 
 int pt;
 printf("Digite o numero da pasta a consultar: \n");
 scanf("%d",&pt);
 if(VerificaVazia(*X)){
 printf("Lista vazia, insira pasta\n");
 } else{
 	P=X->prim;
 while((P!=X->ult)&&(pt>X->processo[P].pasta)){
 P=P+1;
 }
 if((P<X->ult)&&(X->processo[P].pasta == pt)){
 Processo p2;
 p2=X->processo[P];
 VisualisarProcesso(p2);
 } else{
		printf("Elemento nao encontrado"); 
 }
 }
}
void BuscaCliente(Acoes *X){
 int A;
 int P=X->prim; 
 int ident;
 Cliente p1;
 int n;
 Processo p2;
 
 	printf("Digite o numero do cliente a procurar: \n");
 	scanf("%d",&ident);
 
 if(VerificaVazia(*X)){
 printf("Lista vazia, insira pasta, nao ha clientes para procurar\n");
 } else{ 
			p2=X->processo[P]; 
		 p1=X->processo[P].cliente;
			n=p1.id; 
 while((P<X->ult)&&(n==ident)){
 	p2=X->processo[P];
 	p1=X->processo[P].cliente;
			n=p1.id; 
 P=P+1;
			}
			
 if(n == ident){
 printf("O cliente %s pertence ao processo de pasta %i de processo",p1.nome,p2.pasta);
 } else{
 printf("Cliente nao encontrado");
 }
 }
 }
	
void Menu(){
 
 printf("---------- Menu ----------\n ");
 printf("Digite 1 para INSERIR PROCESSO\n ");
 printf("Digite 2 para BUSCAR PROCESS0/PASTA\n ");
 printf("Digite 3 para REMOVER PROCESSO\n ");
 printf("Digite 4 para BUSCAR CLIENTE\n");
 printf("Digite 0 para SAIR\n ");
 //nao tem opcao de editar processo ou pessoa pq sao dados estaticos e privados
}
// -------------------------------------------------------------------------------- aqui comeca o programa
int main(){
 
 Acoes acoes;
	int cod=1;
	//Cliente ct={1,"maria","02374400166","4956313","solteiro","36268956","alfaiate"}; ------------- para teste descomentar
 //Processo proc={1,1,"15151515","civil","goiania","jaum",ct,"pedro","otavio",10.0}; ------------- para teste descomentar
 Processo proc;
 	Cliente ct;
	 
 int p;
 
 CriarAcoes(&acoes);
 printf(" ------------- PROCESSOS ADVOCACIA ------------- \n");
 
 while(cod!=0){
 Menu();
 scanf("%d",&cod);
 switch(cod){
 case 1: 
 if(VerificaCheia(acoes)){
 	printf("Lista cheia, favor remover\n");
 	printf("\n");
				break;
 } else{		
				LerProcesso(proc); //------------- para teste comentar
	 InserirProcesso(&acoes,proc);
 break;
 printf("\n");
				}
 case 2:
 if(VerificaVazia(acoes)){
 		printf("Lista vazia, insira pasta\n");
 		printf("\n");
break;
 } else{
 BuscaProcesso(&acoes, &proc);
 printf("\n");
				break;
				}
 case 3:
 if(VerificaVazia(acoes)){
 		printf("Lista vazia, insira pasta\n");
 		printf("\n");
				break;
 } else{
 RemoveProcesso(&acoes,&proc);
 printf("\n");
				break;
				}
 case 4:
 	if(VerificaVazia(acoes)){
 		printf("Lista vazia, insira pasta\n"); 
 		printf("\n");
				break;
 } else{
 BuscaCliente(&acoes);
 printf("\n");
				break;
				}
 case 0:
 cod=0;
 break;
 default: 
 printf("Opcao invalida! \n");
 
 }
 }
 return 0;
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais