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...