Ir ao conteúdo

Posts recomendados

Postado

 

 

alguém poderia me mostrar exemplos de código desse exercicio:

 

a)Soma dos elementos menores que a raiz, ou seja,soma dos elementos da subárvore esquerda.

b)Média Geométrica dos elementos da árvore

c)Média Ponderadados elementos da árvore usando o nível como peso. (raizequivale aonível1, e assim sucessivamente)


d)Porcentagem de elementos impares na árvoreusando passagem de parâmetropor referência.


e)Valor médio entre o menor elemento e o maior elemento usando variáveis globais

Postado

@Anny Silva já criou alguma arvore em seus programas? 

 

tendo colocado os nós na árvore ao percorrer in-order os nós vem na ordem. Você sempre sabe qual é a raiz então basta listar até a raiz.

 

os outros parâmetros saem naturalmente do mesmo percurso: apenas percorra a tal árvore até o fim. Tudo que tiver até a raiz é menor. E vá fazendo as contas para os valores sintéticos, por eemplo somando para calcular a média

Postado

Média Ponderadados elementos da árvore usando o nível como peso. (raize quivale aonível1, e assim sucessivamente)

 

Como calcular a Média Geométrica dos elementos da árvore?


 

Postado

@Anny Silva é como a média aritmética, mas usando produtos. Multiplique todos os N caras e calcule a raiz N-ésima do produto. Ao invés de somar e dividir pelo número, como na média aritmética.

 

E não é a média geométrica da árvore binária. Isso nada tem a ver com árvores. Trata-se apenas da média dos elementos que por acaso estão gravados nessa estrutura. Qualquer percurso na árvore te dá a coleção de valores, que podiam estar num vetor.

 

C não vai mudar isso em nada"

e só um valor estatístico de uma série de dados. Use * para multiplicar e pow() para a raiz.

 

 

  • Curtir 1
Postado

@arfneto  tentei fazer !

 float mediaAr(arvore*p)
{
apontador aux;
float media;
int r;
mediaAr=0;
r=0;
aux=p->primeiro->prox;
while (aux!-NULL)
{
media=media+aux+chave;
r++;
aux=aux->prox;
}
media=media/r;
return media;
}

 

ficaria mais ou menos assim ?

  • Curtir 1
Postado

@Anny Silva Nem perto disso.

 

O que é chave?

 

Não tem nenhum produto, nenhuma raiz, não multiplicou nada.

 

E a média nada tem a ver com a árvore, com eu disse.

 

8 minutos atrás, Anny Silva disse:

media=media+aux+chave;

 

?

 

33 minutos atrás, arfneto disse:

Multiplique todos os N caras e calcule a raiz N-ésima do produto. Ao invés de somar e dividir pelo número, como na média aritmética.

 

E não é a média geométrica da árvore binária. Isso nada tem a ver com árvores. Trata-se apenas da média dos elementos que por acaso estão gravados nessa estrutura. Qualquer percurso na árvore te dá a coleção de valores, que podiam estar num vetor.

 

C não vai mudar isso em nada"

e só um valor estatístico de uma série de dados. Use * para multiplicar e pow() para a raiz.

 

  • Curtir 1
Postado

tentei fazer o codigo e media ponderada na arvore binária !
estou indo no caminho certo?

 

void  mediaponderada (arvore*p);
{
apontador aux;
float mediap;
int posicao;r;
mediap=0;r=0;
posicao=1;
aux=p->raiz->prox;
while(aux!=NULL)
{
mediap=mediap+aux+chave*pow(mg,1.0/n) ;
r=r+posicao;
posicao++;
aux=aux->prox;
}
mediap=mediap/r;
return mediap;
}


 

Postado

Está indo para o caminho errado. Se é um produto porque não está multiplicando???

 

Não devia abrir vários tópicos com o mesmo tema, como te falei. Leu o que te disse sobre simplesmente percorrer a árvore e fazer as contas????

 

Imagine o exemplo clássico

 

3 e 4 e as médias

 

a média aritmética é 3.5, 3+4 = 5 / 2 = 3.5

 

a média geométrica é  3.87 ou raiz quadrada de 3 * 5... ou 3 * 5 elevado a 1/2

 

Apenas escreva um programa que percorre a árvore... Vai ver cada elemento uma vez. Faça as contas para avaliar os parâmetros de que precisa. Nada mais.

 

Percursos 

 

Exemplos tem em todo lugar e várias linguagens e deve ter visto na aula. Seu curso tem um livro-texto? 

 

 

  • Curtir 1
Postado
5 horas atrás, Anny Silva disse:

tentei fazer o codigo e media ponderada na arvore binária !
estou indo no caminho certo?

 

Não. Acho que devia fazer como te expliquei no post inicial. Percorra a árvore calculando as coisas

 

    while (aux != NULL)
    {
        mediap = mediap + aux + chave * pow(mg, 1.0 / n);
        r      = r + posicao;
        posicao++;
        aux = aux->prox;
    }

 

Esse é o loop onde espera que seu programa consuma os dados da árvore.

 

aux é um apontador? Um ponteiro? Não escreva assim. Só vai te confundir. E aux é um nome pouco feliz. NUNCA crie tipos para ponteiros. Isso foi resolvido em C nos anos '60. Use um asterisco.

 

Poste o código todo, algo minimamente compilável.

 

Escreva em torno dos dados

 

Não misture a árvore com essas coisas que precisa calcular.

 

Imagine uma função assim

 

	float*    prox_dado ( Dado* dado);

 

Que devolve o próximo dado da árvore ou NULL.

 

Você pode só ir chamando isso e MULTIPLICANDO e terá a sua média ponderada.

 

Algo assim

 

    double produto = 0.;
    int    N       = 0;
    int*   prox    = NULL;
    while ((prox = proximo_dado(Dados* dados)) != NULL)
    {   // veio algo
        produto *= (*prox);  // multiplica
        N += 1; // conta o item
    };
    double ponderada = produto * pow( 1,N);
    

 

Mas claro que deve aproveitar a oportunidade e já ir preparando todos os valores que precisa extrair da arvore, como te disse antes.

 

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!