Dúvida - Lógica

5 respostas
J

[size=10]Escreva um algoritmo que leia os 4 lados de um quadrilátero (L1/ L2 /L3/ L4) e informe se é um retângulo e suas medidas. Considere que os números não serão informados em ordem.
[/size]

Preciso fazer o exercício acima mas estou na dúvida em relação à como saber se os números informados são retângulo. Tentei fazer o seguinte :

if ((Lado1 == Lado2 || Lado1 == Lado3 || Lado1 == Lado4) & (Lado2 == Lado3 || Lado2 == Lado4) & (Lado3 == Lado4))

Mas não tenho o retorno que preciso. Alguém pode me ajudar sobre qual if devo usar para identificar quando é retângulo?

5 Respostas

Kallibre

O conceito diz que 2 lados de uma retângulo tem que ser igual e perpendicular ao seu oposto:
Ex:

Lado A = 3cm
Lado B = 5cm
Lado C = 3cm
Lado D = 5cm

Ou seja :

O lado A tem que ser igual e perpendicular ao seu oposto que é o lado C,
O lado B tem que ser igual e perpendicular ao seu oposto que é o lado D, como mostrado acima.

Lógica :

if ( lado A == lado C e lado B == lado D)
é uma retângulo.
se não
não é um retângulo.

J

Mas os números não serão informados em ordem…

E

Parece que você está se confundindo um pouco com os operadores lógicos E (&&) e OU (||)

O que tem de ser feito é: checar se o primeiro lado é igual a qualquer outro E ao mesmo tempo se os outros dois que sobraram são iguais entre si.

Ex.: se o L1 for igual ao L2, o L3 tem que necessariamente ser igual ao L4.

Faça a separação desse jeito, vai ficar bem mais legível o código.

J
private boolean EhUmRetangulo(int ladoA, int ladoB, int ladoC, int ladoD){
      
      int[] lados = new int[4];
      boolean tudoOk;

      lados[0] = ladoA;
      lados[1] = ladoB;
      lados[2] = ladoC;
      lados[3] = ladoD;

      for(int i = 0; i < lados.lenght; i++){
           tudoOk = false;

           for(int z=0; z < lados.lenght; z++){

                 if(lados[i] == lados[z] && i != z){
                      // achou um lado igual
                      tudoOk = true;
                      z = lados.lenght;
                 }
           }

           if(!tudoOk)
               i = lados.leght;
           
      }

      return tudoOk;
}

este código resolve o problema.

tente refazer o código ou postar a explicação do que foi feito para você não apenas “copiar e colar” o código.

Luiz_Augusto_Prado

jeancarcz:
[size=10]Escreva um algoritmo que leia os 4 lados de um quadrilátero (L1/ L2 /L3/ L4) e informe se é um retângulo e suas medidas. Considere que os números não serão informados em ordem.
[/size]

Preciso fazer o exercício acima mas estou na dúvida em relação à como saber se os números informados são retângulo. Tentei fazer o seguinte :

if ((Lado1 == Lado2 || Lado1 == Lado3 || Lado1 == Lado4) & (Lado2 == Lado3 || Lado2 == Lado4) & (Lado3 == Lado4))

Mas não tenho o retorno que preciso. Alguém pode me ajudar sobre qual if devo usar para identificar quando é retângulo?

nesse exemplo que está apresentando vc garante que existem 2 pares de retas perpendiculares? acho que não.

vc precisa confirmar se esses lados (Lx) estão na forma:

L{

x_inicial;

y_inicial;

x_final;

y_final;

}

digo isso, por que vc pode ter um losango, que não é um retângulo.

vc vai precisar se certificar que:
vc tem que certificar que pelo menos 2 retas sejam perpendiculares e que
existam 2 pares de retas paralelas (existe formula)

Criado 8 de abril de 2014
Ultima resposta 9 de abr. de 2014
Respostas 5
Participantes 5