Clique abaixo para nos ajudar
Conectar-se

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
24 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 24 Visitantes :: 2 Motores de busca

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
Espessura do cursor intermitente

7/3/2017, 09:08 por Jefferson Matakas

Bom dia a todos !!

Existe uma opcao no windows que pode ser acessada atraves da 'central da …

Comentários: 0

DESENVOLVIMENTO EM REDES

4/3/2017, 18:45 por AJC

Pessoal tem ou conhece livros ou material para programação em
redes usando banco de dados nativo …

Comentários: 0

USAR REPORT FORM

30/12/2016, 09:06 por AJC

Pessoal bom dia,
Estou com um grande problema, já pesquisei muita coisa sobre report form, mas o …

Comentários: 4

Como preencher campos vazios

9/2/2017, 11:55 por Linghston

Pessoal boa tarde,

É o seguinte, eu preciso preencher os campos de uma coluna da tabela DBF que …

Comentários: 2

Enviar msg para WhatsAPP via VFP

7/2/2017, 10:31 por Eliana

Olá Pessoal!

Alguém sabe se é possível enviar mensagem para o WhatsAPP via VFP?


Grata


Comentários: 0

Estatísticas
Temos 7038 usuários registrados
O último usuário registrado atende pelo nome de CASTROCV

Os nossos membros postaram um total de 31 mensagens em 17 assuntos

Estrutura de dados-Arvore

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Em curso Estrutura de dados-Arvore

Mensagem por gregmachado em 9/6/2013, 23:33

Olá pessoal.
Estou criando uma arvore para fazer um organograma de uma empresa. Nela tenho que inserir cargos e salários. A raiz começa com direção, abaixo dela vou inserindo os filhos, como diretor industrial, diretor administrativo, etc.. em um nivel. No nivel abaixo cada um pode ter um subordinado, e assim por diante. Não estou conseguindo deixar um ponteiro que seria meu parametro para navegação, para que eu não precise pesquisar a árvore toda, toda vez que for inserir um cargo. Se puderem me ajudar, agradeço.
Código:

//Organograma
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <windows.h>
#include <math.h>

struct nodo{
       struct nodo *esq;
       float salario;
       char func[50];
       struct nodo *dir;
};
typedef struct nodo NODO;

void cria_arvore(NODO **r,NODO **a);
void atualizar(NODO **r,NODO **a);
int existe(NODO **r, char nome[]);
void inserir(NODO **r,NODO **a,char func[],float sal);
void listar_subordinados(NODO *a);
void mostra(NODO *r);
char *consulta(NODO *a);

int main()
{
    NODO *raiz,*atual;
    short int op;
    float sal;
    char funcao[50];
    cria_arvore(&raiz,&atual);
    while(op!=8){
                 printf("Voce esta' navegando em %s \nEscolha a opcao desejada:\n\n",consulta(atual));
                 printf("\n*------------------------- *\n");
                 printf("\n| 1-Inserir funcao         |\n");
                 printf("\n*------------------------- *\n");
                 printf("\n| 2- Listar subordinado(s) |\n");
                 printf("\n*------------------------- *\n");
                 printf("\n| 3- Acessar subordinado(s)|\n");
                 printf("\n*------------------------- *\n");
                 printf("\n| 4- Mostrar tudo          |\n");
                 printf("\n*------------------------- *\n");      
                 printf("\n| 5- Consulta salario      |\n");
                 printf("\n*------------------------- *\n");  
                 printf("\n| 6- Volta a raiz          |\n");
                 printf("\n*------------------------- *\n");  
                 printf("\n| 7- Remover funcao        |\n");
                 printf("\n*------------------------- *\n");    
                 printf("\n| 8- Sair                  |\n");
                 printf("\n*------------------------- *\n");
                 printf("\n Informe a Opcao Desejada: ");   
               scanf("%d",&op);
               system("cls");
                 while((op<1)||(op>8)){
                        printf("\nOpcao Invalida! Informe a Opcao Desejada:");
                        scanf("%d",&op);
                                        }
                 switch (op)
                 {
                           case 1:
                                printf("Nome do Cargo: ");
                                fflush(stdin);
                                gets(funcao);
                                strupr(funcao);
                                printf("Valor do Salario Base: ");
                                scanf("%f",&sal);
                                inserir(&raiz,&atual,funcao,sal);
                                break;  
                           case 2:
                                listar_subordinados(atual);
                                break;
                           case 4:
                                mostra(raiz);
                                break;

                 }
    }
}

void cria_arvore(NODO **r,NODO **a)
{
     NODO *novo;
     novo=(NODO*)malloc(sizeof(NODO));
      if(novo!=NULL)
      {
           strcpy(novo->func,"DIRECAO");
           novo->salario=50000;
           novo->esq=NULL;
           novo->dir=NULL;
           *r=novo;
           *a=*r;
     }
}

int existe(NODO **r, char nome[])
{
    //0-não existe, 1-existe
     NODO *aux,*ant;
     aux=*r;
     if(*r!=NULL){
                  if(aux->esq!=NULL){
                                     ant=aux;
                                     aux=ant->esq;
                                    while(aux!=NULL){
                                                     if((strcmp(aux->func,nome)!=0)){
                                                                                    ant=aux;
                                                                                    aux=aux->dir;
                                                     }else return 1;
                                                     }
                                                     return 0;  
                                    }else return 0;
                  }else return 0;                      
}

void inserir(NODO **r,NODO **a,char func[],float sal)
{
     NODO *novo,*aux;
     if((existe (&(*a),func)==0)){
                                 novo=(NODO*)malloc(sizeof(NODO));
                                 strcpy(novo->func,func);
                                 novo->salario=sal;
                                 novo->esq=NULL;
                                 novo->dir=NULL;
                                 aux=*a;
                                 if(aux->esq == NULL){
                                             aux->esq = novo;
                                             //*a=novo;
                                             }else{
                                                   while(aux->dir != NULL){
                                                                  aux = aux->dir;
                                                                  }//while
                                                                  aux->dir = novo;
                                                                  //*a=novo;
                                                   }//else
                                 }else{
                                       printf("\nFuncao ja' existe, impossivel inserir.");
                                       }
}//função

void listar_subordinados(NODO *a)
{
     NODO *aux;
     aux=a;
     aux=aux->esq;
     if(aux!=NULL){
                 printf("%c \n",aux->func);
                 while(aux!=NULL){
                                  aux=aux->dir;
                                  if(aux!=NULL)
                                  printf("%s \n",aux->func);
                                  }//while
                 }else{
                       printf("Nao possui subordinados registrados.\n");
                       }//else
}

void mostra(NODO *r)//in-ordem
{
     if(r!=NULL){
                 mostra(r->dir);
                 printf("%s\n",r->func);
                 mostra(r->esq);
                 }
}

char *consulta(NODO *a)
{
     return(a->func);
}

gregmachado
Participa Pouco
Participa Pouco


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum