Ir ao conteúdo
  • Cadastre-se

Árvore de descontos


megghaz

Posts recomendados

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-nao 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 nem como começar a montar a fulana da arvore para cada aluno nem como fazer cada folha ter seu desconto...

se eu alguém pudesse me ajudar...

POR FAVOR...

to desesperado...

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!