Advertisement
Guest User

Untitled

a guest
Aug 30th, 2015
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.33 KB | None | 0 0
  1. #include <string>
  2. #include <stdio.h>
  3. using namespace std;
  4.  
  5. struct ARVB {
  6.     string nome;
  7.     char numero[8];
  8.     char email[50];
  9.     int RG;
  10.     struct ARVB* esq;
  11.     struct ARVB* dir;
  12. };
  13.  
  14. typedef struct ARVB ARVB;
  15. ARVB* arv_criavazia (void);
  16. ARVB* arv_cria (char c, ARVB* e, ARVB* d);
  17. ARVB* arv_libera (ARVB* a);
  18. int arv_vazia (ARVB* a);
  19. int arv_pertence (ARVB* a, int num);
  20. void arv_imprime (ARVB* a);
  21.  
  22.  
  23. int main(int argc, char** argv) {
  24.     ARVB* a[9];
  25.     /* sub-árvore 'h' */ ARVB* a[1] = arv_cria('i',arv_criavazia(),arv_criavazia());
  26.     /* sub-árvore 'i' */ ARVB* a[2] = arv_cria('h',arv_criavazia(),arv_criavazia());
  27.     /* sub-árvore 'g' */ ARVB* a[3] = arv_cria('g',a[1],a[2]);
  28.     /* sub-árvore 'd' */ ARVB* a[4] = arv_cria('d',arv_criavazia(),arv_criavazia());
  29.     /* sub-árvore 'b' */ ARVB* a[5] = arv_cria('b',a[3],a[4]);
  30.     /* sub-árvore 'e' */ ARVB* a[6] = arv_cria('e',arv_criavazia(),arv_criavazia());
  31.     /* sub-árvore 'f' */ ARVB* a[7] = arv_cria('f',arv_criavazia(),arv_criavazia());
  32.     /* sub-árvore 'c' */ ARVB* a[8]= arv_cria('c',a[6],a[7]);
  33.     /* árvore 'a' */ ARVB* a[9] = arv_cria('a',a5,a8 );
  34.  
  35.     int opcao = 1;
  36.     while (opcao != 5) {
  37.         printf("\n\t\t\t----- ARVORE BINARIA ------\n\n");
  38.         printf("\n\t\t----- MENU PRINCIPAL ----- \n\n");
  39.         printf("1 - Cadastrar numero.\n");
  40.         printf("2 - Pesquisar numero.\n");
  41.         printf("3 - Remover numero.\n");
  42.         printf("4 - Listar cadastros.\n");
  43.         printf("5 - Sair.\n");
  44.         printf("\nDigite a opcao desejada: ");
  45.         scanf("%d",&opcao);
  46.         switch(opcao) {
  47.             case 1 : {
  48.                     char num[8];
  49.                     bool a = false;
  50.                     printf("\n\t\t\t----- ARVORE BINARIA ------\n\n");
  51.                     printf("\n\t----- CADASTRO DE NUMEROS ----- \n\n");
  52.                     printf("Informe o numero da conta: ");
  53.                     gets(num);
  54.                     while(arv_pertence(a[], atoi(num)))
  55.                         if(strcmp(a[i].numero),num) == 1) {
  56.                             a = true;
  57.                         } else {
  58.                             a[i]
  59.                         }
  60.                     }
  61.                     if(a == false) {
  62.                         cadastrar(num);
  63.                     } else {
  64.                         printf("\nNumero ja cadastrado.");
  65.                     }
  66.                     fflush(stdin);
  67.                 break;
  68.             }
  69.             for(int i = 0; i < 3; i++) {
  70.                 printf(cliente[i].nome);
  71.             }
  72.  
  73.         }
  74.     }
  75.     return 0;
  76. }
  77.  
  78.  
  79. ARVB* arv_criavazia () {
  80.     return null;
  81. }
  82.  
  83. ARVB* arv_cria (int num, char nome1[50], char email1[50], int RG1, ARVB* e, ARVB* d);
  84. {
  85.     ARVB* p = (ARVB*)malloc(sizeof(ARVB));
  86.     if(p == NULL)
  87.         exit(1);
  88.     p -> numero = num;
  89.     printf("Nome: ");
  90.     gets(cliente[i].nome);
  91.     printf("Email: ");
  92.     gets(cliente[i].email);
  93.     p -> nome = nome1;
  94.     p -> email = email1;
  95.     p -> RG = RG1;
  96.     p -> esq = sae;
  97.     p -> dir = sad;
  98.     return p;
  99. }
  100.  
  101. ARVB* arv_libera (ARVB* a) {
  102.     if (!arv_vazia(a)){
  103.         arv_libera(a -> esq); /* libera sae */
  104.         arv_libera(a -> dir); /* libera sad */
  105.         free(a); /* libera raiz */
  106.     }
  107.     return NULL;
  108. }
  109.  
  110. int arv_vazia (ARVB* a) {
  111.     return a == NULL;
  112. }
  113.  
  114. int arv_pertence (ARVB* a, int num) {
  115.     if (arv_vazia(a))
  116.         return 0;
  117.     else
  118.         return a -> atoi(numero) == num || arv_pertence(a -> esq,num) || arv_pertence(a -> dir,num);
  119. }
  120.  
  121. void arv_imprime (ARVB* a) {
  122.     if (!arv_vazia(a)){
  123.         printf("%d ",a -> numero); /* mostra raiz */
  124.         arv_imprime(a -> esq); /* mostra sae */
  125.         arv_imprime(a -> dir); /* mostra sad */
  126.     }
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement