Ir para conteúdo
Fórum Script Brasil
  • 0

árvore de descontos


megghaz

Pergunta

Preciso entregar o seguinte programa:

Uma árvore que simula a matricula de alunos que foram indicados por outros alunos.

quem não foi indicado por ninguém vira "folha" do gerente...

o aluno que indica novos alunos ganha um desconto de um real por aluno indicado

alem dos cadastros dos alunos o programa precisa mostra a arvore de cada aluno(quais alunos forma indicados por ele)

O QUE EU JÁ CONSEGUI FAZER

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


typedef struct{
        char nome[100];
        int desconto;
        }elemento;
const elemento VL_NULO={""};

#include "tad_arvore.cpp"


tree arvore;
int main(){
    char op;
    int contaDesconto;
    elemento filho, pai;
    tree arv;
    strcpy(pai.nome,"gerente");
    criaRaiz(&arvore,pai);
    do{
    system("cls");
    printf("1-aluno indicado\n2-não indicado\n");
    scanf("%c",&op);
    if(op=='1'){
                printf("Digite o nome de quem indicou");
                fflush(stdin);
                gets(pai.nome);
                }
    else if(op=='2'){
                  strcpy(pai.nome,"gerente");
                  }
    printf("digite o nome do aluno\n");
    fflush(stdin);
    gets(filho.nome);
    arv=localiza(arvore,pai);
    if(arv!=NULL){
                  if(arv->esq!=NULL){
                                     arv=arv->esq;
                                     do{
                                           if(arv->dir==NULL){
                                                 adicionarDir(arvore,arv->info,filho);
                                                 printf("direita de %s\n",arv->info.nome);
                                                 system("pause");
                                                 break;
                                                 }
                                           else
                                               arv=arv->dir;
                                        }while(1);
                                        
                  }
    else{
         adicionarEsq(arvore,arv->info,filho);
         printf("Esquerda de %s\n",arv->info.nome);
         system("pause");
         }
    }
}while(1);
}
IMPLEMENTAÇÃO DAS OPERAÇÕES DA ÁRVORE
#include<stdlib.h>



typedef struct nodo *ptrNodo;
struct nodo {
            elemento info;
            ptrNodo esq,
                     dir;
         };

typedef ptrNodo tree;
void define(tree *t) {
      *t = NULL;
}
void criaRaiz(tree *t,elemento item) {
    tree no;
    no = (ptrNodo)malloc(sizeof(struct nodo));
    no->esq = NULL;
    no->dir = NULL;
    no->info = item;
    *t = no;
}

int vazia (tree t) {
    return (t==NULL);
}

ptrNodo localiza(tree t, elemento item) {
   ptrNodo locesq, locdir;
   locesq = NULL;
   locdir = NULL;
   if (strcmpi(t->info.nome,item.nome) != 0) {
       if (t->esq != NULL)
           locesq = localiza(t->esq,item);
       if (locesq == NULL) {
             if (t->dir != NULL)
               locdir = localiza(t->dir,item);
           if (locdir == NULL)
                 return NULL;
           else
                 return locdir;
       }
       else
            return locesq;
   }
   else
       return t;
}


int adicionarDir(tree t, elemento item_pai, elemento item) {
    tree pai, no;
    pai = localiza(t,item_pai);
    if (pai!=NULL)
        if (pai->dir!=NULL)
          return 0;
        else {
         no = (ptrNodo)malloc(sizeof(struct nodo));
            no->esq = NULL;
            no->dir = NULL;
            no->info = item;
            pai->dir = no;
         return 1;
        }
}


int adicionarEsq(tree t, elemento item_pai, elemento item) {
    tree pai, no;
    pai = localiza(t,item_pai);
    if (pai!=NULL)
        if (pai->esq!=NULL)
            return 0;
        else {
            no = (ptrNodo)malloc(sizeof(struct nodo));
            no->esq = NULL;
            no->dir = NULL;
            no->info = item;
            pai->esq =no;
         return 1;
        }
}

não sei como calcular o desconto de cada aluno nem como imprimir na tela a arvore com as indicações

se eu alguém pudesse me ajudar...

POR FAVOR...

to desesperado...

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...