Função Árvores genealógica

12/11/2019

0

Boa tarde!
Eu sou iniciante em javascript, e estou montando um programa que diz se 2 filhos são meio irmão ou não.
Poderiam me ajudar?

function temAMesmaMae(filho1, filho2){
return maeDe(filho1) == maeDe(filho2);
}

function temOMesmoPai(filho1, filho2){
return paiDe(filho1) == paiDe(filho2);
}

function saoMeioIrmaos(filho1, filho2){
if (temAMesmaMae(filho1, filho2) && !temOMesmoPai(filho1, filho2){
return (''São meio-irmãos'');
}
}

Não estou conseguindo, não executa.
Bianca Paula

Bianca Paula

Responder

Posts

13/11/2019

Jorge Pinto

Olá Bianca !! Tudo bem com vc?

Vou tentar lhe ajudar, e para isso precisamos primeiro definir bem aqui o conceito de meio-irmão. Considerei que meio-irmão é todo filho que possui a mesma mãe OU o mesmo pai, mas não ambos. Ok?

Me baseei no wiki abaixo para definir isso:
https://pt.wikipedia.org/wiki/Meios-irmãos


Observe o código abaixo:

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <script type="text/javascript">

            // =======================================================================
            //  Funções para simular o comportamento das funções ou métodos reais maeDe
            //  e paiDe.
            //  Para conseguir simular seu programa criei o cenário abaixo, observe:
            //  
            //          Pais        João        Pedro       Maria       Ana       
            //          Filhos      Roberto                 Roberto
            //                      Rafaela                 Rafaela
            //                                  André                   André
            //                      Cristiane
            //                                                          Luis
            //                                                                                                                  
            //  Meio-irmãos são filhos que possuem o mesmo pai OU a mesma mãe, entretanto
            //  não podem ter ambos, ou seja, não podem ter o mesmo pai E a mesma mãe.
            //  Assim sendo temos no cenário acima os seguintes meio-irmãos:
            //  
            //  1 - Roberto e Cristiane -> Mesmo pai (consanguineos)
            //  2 - Rafaela e Cristiane -> Mesmo pai (consanguineos)
            //  3 - André e Luis        -> Mesma mãe (uterinos)
            //  
            //  Note que Roberto e Rafaela tem o mesmo pai E a mesma mãe, portanto não
            //  são meio-irmãos e sim irmãos.
            //  
            //  As funções abaixo irão simular de forma "burra" o cenário acima.
            function maeDe(filho) {
                var ret = "";
                if (filho == "Roberto" || filho == "Rafaela") {
                    ret = "Maria";
                }
                if (filho == "André" || filho == "Luis") {
                    ret = "Ana";
                }
                
                return ret;
            }

            function paiDe(filho) {
                var ret = "";
                if (filho == "Roberto" || filho == "Rafaela" || filho == "Cristiane") {
                    ret = "João";
                }
                if (filho == "André") {
                    ret = "Pedro";
                }
                
                return ret;
            } 
            // ======================================================================
            
            function temAMesmaMae(filho1, filho2) {
                return maeDe(filho1) == maeDe(filho2);
            }
            
            function temOMesmoPai(filho1, filho2) {
                return paiDe(filho1) == paiDe(filho2);
            }
            
            function saoMeioIrmaos(filho1, filho2) {
                //Essas condições trazem todos os meio-irmãos e também os irmãos
                if(temAMesmaMae(filho1, filho2) || temOMesmoPai(filho1,filho2)) {
                    //Essas condições retiram os irmãos do resultado sobrando apenas
                    //os meio-irmãos
                    if(!(temAMesmaMae(filho1, filho2) && temOMesmoPai(filho1,filho2))) {
                        alert(filho1+" e "+filho2+" são meio-irmãos.");
                    } else {
                        alert(filho1+" e "+filho2+" são irmãos.");                        
                    }
                } else {
                    alert(filho1+" e "+filho2+" não são irmãos nem meio-irmãos.");                                            
                }
            }
            
            saoMeioIrmaos("Roberto","Cristiane");
            
            saoMeioIrmaos("Roberto","Rafaela");
            
            saoMeioIrmaos("André","Rafaela");

            saoMeioIrmaos("André","Luis");

            saoMeioIrmaos("Roberto","Luis");
    
        </script>    
    </body>
</html>


Analise e execute ele, está bem comentado, observe bem a utilização dos operadores lógicos em conjunto com a definição do que se quer...

acho que era isso que vc precisava, mas qualquer dúvida é só falar.

Espero ter ajudado !
Abraço e bons códigos !



Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar