La función debe validar que la longitud de los 3 lados del triángulo corresponden a un triángulo isósceles.
functionalturaTrianguloIsosceles(ladoA, ladoB, ladoBase) {
if (ladoA != ladoB) {
console.error("Los lados a y b no son iguales");
} else {
// ...
}
}
La función debe retornar la altura del triángulo.
Para calcular la altura de un triángulo isósceles vamos a dividir nuestro triángulo en dos. Así tendremos dos triángulos iguales, uno de sus nuevos lados tendrá la misma longitud que la altura del triángulo original y calculando la longitud de este lado habremos calculado también la altura.
En total vamos a resultar con 3 triángulos, pero como los dos triángulo chiquitos son exactamente iguales, es suficiente si trabajamos con solo 2 triángulos (trianguloGrande y trianguloPequeno).
Creemos estos dos triángulos en JavaScript:
functionalturaTrianguloIsosceles(trianguloGrandeLadoA, trianguloGrandeLadoB, trianguloGrandeLadoBase) {
if (trianguloGrandeLadoA != trianguloGrandeLadoB) {
console.error("Los lados a y b no son iguales");
} else {
let trianguloPequenoLadoA; // PENDIENTEconst trianguloPequenoLadoB = trianguloGrandeLadoBase / 2;
const trianguloPequenoLadoBase = trianguloGrandeLadoA;
// ...const trianguloGrandeAltura = trianguloPequenoLadoA;
return trianguloGrandeAltura;
}
}
¡Muy bien! Ahora solo debemos seguir la fórmula para hallar la longitud de un lado del triángulo a partir de dos de sus lados (esto en el mundo de las matemáticas es lo que conocemos como teorema de Pitágoras): aˆ2 + bˆ2 = cˆ2.
Pero la fórmula aún no es exactamente lo que necesitamos. No necesitamos encontrar ladoBase a partir de ladoA y ladoB, sino encontrar ladoA a partir de ladoBase y ladoB.
Para esto debemos “despejar” ladoA, es decir, “mover de lado” cualquier número o variable que esté modificando a ladoA en la fórmula.
Recuerda que lo que en un lado estaba sumando, pasa al otro restando; lo que estaba a un lado restando, pasa al otro sumando; lo que estaba a un lado multiplicando, pasa al otro dividiendo; lo que a un lado estaba dividiendo, pasa al otro multiplicando; lo que estaba a un lado elevando; pasa al otro radicando, y lo que estaba a un lado radicando, pasa al otro lado elevando.
¡Muy bien! ¡Ya casi terminamos!
Ahora solo nos falta traducir esta fórmula a JavaScript (recuerda la pista que te di, podemos calcular las raíces cuadradas con la función Math.sqrt de JavaScript):
functionalturaTrianguloIsosceles(trianguloGrandeLadoA, trianguloGrandeLadoB, trianguloGrandeLadoBase) {
if (trianguloGrandeLadoA != trianguloGrandeLadoB) {
console.error("Los lados a y b no son iguales");
} else {
const trianguloPequenoLadoB = trianguloGrandeLadoBase / 2;
const trianguloPequenoLadoBase = trianguloGrandeLadoA;
const trianguloPequenoLadoBCuadrado = trianguloPequenoLadoB * trianguloPequenoLadoB;
const trianguloPequenoLadoBaseCuadrado = trianguloPequenoLadoBase * trianguloPequenoLadoBase;
const trianguloPequenoLadoA = Math.sqrt(trianguloPequenoLadoBaseCuadrado - trianguloPequenoLadoBCuadrado);
const trianguloGrandeAltura = trianguloPequenoLadoA;
return trianguloGrandeAltura;
}
}
__
¡Si llegaste hasta aquí sin hacer trampa, te felicito! Te graduaste casi oficialmente de este primer taller. Ahora tienes mi bendición para pasar a la siguiente clase y empezar el segundo taller.
Aportes 897
Preguntas 40
Ordenar por:
Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.
Quiero hacer una aclaración que puede ser de gran ayuda para todos:
Recuerden que todo lo que entra en un formulario es tipo string, el input type=“number” lo que hace es que solamente reciba caracteres tipo número. Pero no significa que lo que entra JS lo tome como Number en las funciones.
Para ello se debe hacer coerción de lo que queda en los values o hacer la coerción en las funciones mismas al definirlas.
Si esto no se hace, el resultado va a ser muy diferente a lo esperado. Por ejemplo la función de perimetro de triángulo. Si ponemos que estos valores trianglePerimeter(5, 5, 5); al llamar la función el resultado será 555
Muchachos, hay una ley de los triángulos que dice que, un lado no puede ser mayor a la suma de los lados restantes.
Para agregar esa lógica al código, lo realicé de ésta forma:
const calculAltura = function (a, b, c) {
let A;
if(a > b && b === c && a >= 2*b || b > a && a === c && b >= 2*a || c > a && a === b && c >= 2*a) {
alert('Valores fuera de lo real');
} elseif(a > b && a === c || a < b && a === c) {
A = Math.sqrt(Math.pow(a,2) - Math.pow(b/2, 2));
return A;
} elseif(a > c && a === b || a < c && a === b) {
A = Math.sqrt(Math.pow(a,2) - Math.pow(c/2, 2));
return A;
} elseif(b > a && b === c || b < a && b === c) {
A = Math.sqrt(Math.pow(b,2) - Math.pow(a/2, 2));
return A;
} else {
alert('El triangulo no es Isósceles');
}
}
Resuelto compañeros!!
Éxitos a todos en sus intentos… tengan paciencia siempre.
functioncalcularAltura(ladoA,ladoB,ladoC){
let ladosIsometricos; // Lados que tienen mismas medidas y que hacen al triangulo isosceleslet ladoBase; // Equivalente al lado diferentelet altura;
// Comprobamos que el triangulo segun las medidas proporcionadas, exista.// Para ello, la propiedad de la existencia de un traingulo nos dice que...// La suma de dos de sus lados no puede resultar menor o igual a la medida del tercer lado.if(ladoA+ladoB<=ladoC || ladoA+ladoC<=ladoB || ladoB+ladoC<=ladoA) {
alert('Este triángulo no existe')
} else { // Buscamos los lados iguales...switch(true) {
case ladoA === ladoB:
ladosIsometricos = ladoA
ladoBase = ladoC
break;
case ladoA === ladoC:
ladosIsometricos = ladoA
ladoBase = ladoB
break;
case ladoC === ladoB:
ladosIsometricos = ladoB
ladoBase = ladoA
break;
}
// De no exisitir, la variable ladosIsometricos no se inicializara// Usaremos esto para advertir que el triangulo ingresado no es isosceles// De lo contrario, la funcion imprimira la alturaif(!ladosIsometricos){
alert('Este no es un triángulo isósceles')
} else {
altura = Math.pow((ladosIsometricos**2)-(ladoBase**2)/4,1/2)
console.log(`La altura es ${altura} unidades!!`)
}
}
}
// ===== Jugamos con valores ======const sideA = 1const sideB = 2const sideC = 3
calcularAltura(sideA, sideB, sideC) // resultado: El triangulo no existeconst sideA = 5const sideB = 8const sideC = 5
calcularAltura(sideA, sideB, sideC) // resultado: La altura es 3 unidades!!
Bien, ahora para la implementación en la página proyecto decidí hacerlo mediante un checkbox para desplegar los inputs necesarios para los cálculos del triángulo isósceles.
Así quedo:
Aquí mi código, me ayudo un poco con el tema de los enteros y flotantes haber tomado el curso de programación básica. 😃 Va excelente este curso.
//Esta función se llama al dar click al botón "Calcular altura" basándonos del HTML del ejercicio previo :)functioncalcularAltura() {
const inputUno = document.getElementById("inputLadoUno");
const ladoUno = parseFloat(inputUno.value);
const inputDos = document.getElementById("inputLadoDos");
const ladoDos = parseFloat(inputDos.value);
const inputLadoBase = document.getElementById("inputBase");
const base = parseFloat(inputLadoBase.value);
if (ladoUno === ladoDos) {
if (ladoUno > 0 && base > 0) {
const sumaLados = ladoUno+ladoDos;
if (base < sumaLados) {
//Para usar Pitágoras a2 + b2 = c2const c = ladoUno;
const b = base/2;
const a = Math.sqrt((c*c) - (b*b));
alert("La altura es de: " + a + "cm");
}
else {
alert("La base es mayor o igual a la suma de los lados, no existe altura.");
}
}
else {
alert("Los lados tienen que ser mayor a cero incluyendo la base");
}
}
else {
alert("Los lados 1 y 2 tienen que ser el del mismo tamaño");
}
}
Así quedo mi solución, realice tres calculadoras para triángulos, una para el equilátero, otra para el isósceles y una tercera que permite realizar cálculos con cualquier triángulo teniendo el dato de altura.
var lado1, lado2, lado3;
functionalturaTriangulo(lado1, lado2, lado3){
var isoceles = false;
var a,b;
var altura = 0;
if (lado1 == lado2 && lado1 != lado3){
isoceles = true;
a = lado1;
b = lado3;
} elseif (lado1 == lado3 && lado1 != lado2) {
isoceles = true;
a = lado1;
b = lado2;
} elseif (lado2 == lado3 && lado2 != lado1) {
isoceles = true;
a = lado2;
b = lado1;
} else {
isoceles = false;
}
if (isoceles){
altura = Math.sqrt(Math.pow(a, 2)-(Math.pow(b, 2)/4));
returnconsole.log("La altura de tu triámgulo es: " + altura);
} else {
console.log("Lo siento pero tu triángulo no es isósceles");
}
}
lado1 = parseFloat(prompt("Digita la medida del lado 1 de tu triángulo"));
lado2 = parseFloat(prompt("Digita la medida del lado 2 de tu triángulo"));
lado3 = parseFloat(prompt("Digita la medida del lado 3 de tu triángulo"));
alturaTriangulo(lado1, lado2, lado3);
Hice el código con html para hacerlo un poco más interactivo.
Además quise añadir que evaluara si el triángulo es equilátero, isóceles o escaleno en función de los parámetros que pongamos. Calcula la altura y el área por separado, los datos salen en la consola del navegador.
Les dejo el código de html y js:
HTML
<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width, initial-scale=1.0"><style>body{
font-family: Verdana, Geneva, Tahoma, sans-serif;
}
p{
font-family: Arial, Helvetica, sans-serif;
}
</style><title>calcular tirangulo isóceles</title></head><body><h1>Vamos a calcular la <strike>rosalía</strike> altura de un triángulo isóceles</h1><section><labelfor=""><p><inputtype="number"id="Lado1"> Lado 1
</p><p><inputtype="number"id="Lado2"> Lado 2
</p><p><inputtype="number"id="Base"> Base
</p><p><buttontype="button"onclick="calcularAltura()">Calcular altura</button><buttontype="button"onclick="calcularArea()">Calcular área</button></p></label></section><scriptsrc="triangulos.js"></script></body></html>
JS
const lado1 = document.getElementById("Lado1");
const lado2 = document.getElementById("Lado2");
const base = document.getElementById("Base");
function evaluar(cateto1, cateto2, cateto3) {
var tipo_de_triangulo;
if(cateto1 == cateto2 && cateto1 == cateto3){
tipo_de_triangulo = "Equilátero";
console.log("Es Equilátero")
return tipo_de_triangulo;
}
elseif(cateto1 == cateto2){
tipo_de_triangulo = "Isóceles";
console.log("Es Isóceles");
return tipo_de_triangulo;
}
else{
tipo_de_triangulo = "Escaleno";
console.log("Es Escaleno");
return tipo_de_triangulo;
}
}
// Cálculo de Altura// alturaNormal significa que es equilátero o isóceles function alturaNormal(cateto, base){
base = base / 2;
const altura = Math.sqrt((cateto ** 2) - (base ** 2))
console.log("Altura: " + altura)
return altura;
}
function alturaEscaleno(cateto1, cateto2, cateto3){
// Formula de Herón (tienes la medida de los 3 lados)// Var s (es la mitad del perímetro del triangulo) / s= (a+b+c)/2// 1/2bh (b = lado b) (h = alturaEscaleno)
const s = (cateto1 + cateto2 + cateto3) / 2;
const areaEscaleno = Math.sqrt(s * (s - cateto1) * (s - cateto2) * (s - cateto3))
var h;
const alturaEscaleno = Math.sqrt(s * (s - cateto1) * (s - cateto2) * (s - cateto3)) / ( 3 / 2 )
console.log("Area: " + areaEscaleno);
console.log("Altura: " + alturaEscaleno);
}
// Cálculo de Áreafunction areaNormal(cateto, base) {
const h = alturaNormal(cateto, base);
const area = (base * h) / 2;
return area;
}
function areaEscaleno(cateto1, cateto2, base) {
const s = (cateto1 + cateto2 + cateto3) / 2;
const areaEscaleno = Math.sqrt(s * (s - cateto1) * (s - cateto2) * (s - cateto3))
return areaEscaleno;
}
// Triggersfunction calcularAltura(){
const tipo = evaluar(lado1.valueAsNumber, lado2.valueAsNumber, base.valueAsNumber);
if(tipo != "Escaleno"){
let altura = alturaNormal(lado1.valueAsNumber, base.valueAsNumber)
}
else{
let altura = alturaEscaleno(lado1.valueAsNumber, lado2.valueAsNumber, base.valueAsNumber)
}
}
function calcularArea(){
const tipo = evaluar(lado1.valueAsNumber, lado2.valueAsNumber, base.valueAsNumber);
if(tipo != "Escaleno"){
let area = areaNormal(lado1.valueAsNumber, base.valueAsNumber)
console.log("El área es: " + area)
}
else{
let area = areaEscaleno(lado1.valueAsNumber, lado2.valueAsNumber, base.valueAsNumber)
console.log("El área es: " + area)
}
}
Hola, yo hice un poquito mas cortita la función, use if ternarios para que quede mas facil de leer uwu
function alturaTriangulo(lado1,lado2, base){
const teoremaPitagoras = Math.sqrt(lado1**2 - ((base/2) ** 2));
const isoceles = lado1 === lado2 && base < lado1 + lado2 ? true : false;
return altura = isoceles === true? teoremaPitagoras : "revisa que los lados sean iguales, y la base menor a la suma de los lados";
}
Se la puede hacer mas corta, pero pienso que queda mas fácil de leer de esta forma owo.
Quedo perron o no?
Hola! como estan ? este es mi codigo! lo unico que me dio pereza fue calcular la altura y puse un calculo random 😃 jajaja, pero lo otro… it works well
<section>
<h2>calcula el area y perimetro de un triangulo isoceles</h2>
<form>
<labelfor="inputTrianguloIsocelesLado1 inputTrianguloIsocelesLado2 inputTrianguloIsocelesBase">
escride cuanto quieres que midan los lados y la base del triangulo isoceles
</label>
<input id="inputTrianguloIsocelesLado1"type="number" placeholder="escribe el numero que tu quieras para el lado 1 del triangulo isoceles" />
<input id="inputTrianguloIsocelesLado2"type="number" placeholder="escribe el numero que tu quieras para el lado 2 del triangulo isoceles" />
<input id="inputTrianguloIsocelesBase"type="number" placeholder="escribe el numero que tu quieras para la base del triangulo isocles" />
<button type="button" onclick="CalcularAltura()">
calcula la altura!
</button>
</form>
</section>
// calculo del triangulo isocelesconsole.group("triangulo isoceles");
functionTrianguloIsoceles(LADO, LADO2, BASE) {
var lado2 = LADO2;
var lado1 = LADO;
var base = BASE;
if (lado1 === lado2) {
console.log("si tiene 2 lados iguales entonces no es un traingulo isoceles!")
} else {
console.log("los lados del triangulo son " + lado1 + " y " + lado2 );
console.log("la base del triangulo es " + base);
const alturaIsoceles = (Number((lado2 * lado1)/ base));
console.log("la altura del triangulo isoceles es " + alturaIsoceles);
};
};
functionCalcularAltura() {
var inputTriangulo = document.getElementById("inputTrianguloIsocelesLado1");
var inputTriangulo2 = document.getElementById("inputTrianguloIsocelesLado2");
var inputTrianguloIsocelesBase = document.getElementById("inputTrianguloIsocelesLado1");
var valueTriangulo = inputTriangulo.value;
var valueTriangulo2 = inputTriangulo2.value;
var valueTrianguloIsocelesBase = inputTrianguloIsocelesBase.value;
var altura = TrianguloIsoceles(valueTriangulo, valueTriangulo2, valueTrianguloIsocelesBase);
console.log(altura);
document.write(altura);
}
Me costó un montón leí mucho código de ustedes antes de poder entender bien y que funcionara. Gracias, recibo sugerencias.
// IsoscelesfunctionalturaTrianguloIsosceles(lado1, lado2, base) {
if (lado1 !== lado2) {
alert("The sides are not equal")
}
else{
//Construimos los nuevos lados cortando el triangulo al medio//El lado mas chico es la base dividida al medioconst ladoTiny2 = base / 2;
//La base pasa a ser el lado 1const baseTiny = lado1;
const ladoTiny2Cuadrado = ladoTiny2 * ladoTiny2;
const baseTinyCuadrado = baseTiny * baseTiny;
//El lado restante es igual a la altura del triangulo mayor. //Conseguimos esta restando la raiz cuadrada de la nueva base y el ladoconst ladoTiny1 = Math.sqrt(baseTinyCuadrado - ladoTiny2Cuadrado);
const altura = ladoTiny1;
return altura;
}
}
console.groupEnd();
//Isosceles functioncalculateIsoscelesHeight() {
const input1 = document.getElementById("inputIsosceles1");
const input2 = document.getElementById("inputIsosceles2");
const inputBase = document.getElementById("inputIsoscelesBase");
const value1 = Number(input1.value);
const value2 = Number(input2.value);
const valueBase = Number(inputBase.value);
const height = alturaTrianguloIsosceles(value1, value2, valueBase);
alert(height);
}
Buenas quiero compartir mi codigo, por si les sive de ayuda a alguien
// Declaramos una funcion con la formula de calcular la altura, la pueden buscar en internet function calcularAlturaTriangulo(lado1,lado2,){
const altura = Math.sqrt((lado1 * lado1) - ((lado2 * lado2) / 4))
console.log(altura);
}
// Declaramos una funcion para pasarle los lados y la base y con un if verificamos si es o no isóceles, // en caso de que si lo sea llamamos a la funcion antes declarada usando los parametros de lado1 y lado2 function alturaTrianguloIso(lado1,lado2,base) {
if (lado1 == lado2 && base !== lado1 ) {
calcularAlturaTriangulo(lado1,lado2);
}else{
return "El triangulo no es Isóceles";
}
}
Creé un código que reciba los 3 lados en cualquier orden, sin saber cual es la base, y los analice si corresponden a un triangulo, si es un triangulo isosceles, y cual es su altura. Les dejo el código:
/*
Lado 1 = a
Lado 2 = b
Base = c
*/functionaltura(a,b,c){
if(a === b && a != c){
const h = (Math.pow(a,2) - (Math.pow(b,2)) / 2);
const altura = Math.sqrt(h);
alert("El triangulo es isosceles y la altura es: " + altura);
}
else
alert("No es un triangulo isosceles");
}
altura(5,5,4);
Arme una pequeña función para identificar el tipo de triangulo, puede ser de utilidad para calcular altura, perímetro y área de cada tipo de triangulo de acuerdo a sus lados n_n
function calcularAlturaTrianguloIsosceles(lado1, lado2, base) {
if (lado1 === lado2) {
var lado1, lado2 = a;
var base = b;
return h = Math.sqrt((a * a) - (b * b) / 4);
} else {
alert("Esto no es un triangulo isosceles");
}
}
function alturaIsoceles(lado1, lado2, base) {
lado1 = parseInt(prompt("Cual es el lado a?"));
lado2 = parseInt(prompt("Cuanto es el lado b?"));
base = parseInt(prompt("Cuanto es el la base"));
if (lado1 === lado2 && lado1 != base) {
console.log("es isoceles");
var altura = Math.sqrt((lado1 * lado1) - (base * base / 4));
console.log("la altura del triangulo es: " + altura);
} else {
console.log("No es isoceles");
}
}
Mi solución 😃
En caso de que en la primera función retorne falso la segunda función valida ese resultado y si es falso nos imprime en pantalla que ese no es un triángulo isósceles
Dejo mi codigo por aquí
HTML:
<h2>Calcula la altura de un triangulo Isósceles </h2>
<form action="">
<label for=“InputTrianguloIscoceles”>
Escribe cuanto mide el lado A de tu Triangulo
</label>
<input id=“InputTrianguloIscoceles” type=“number”>
<label for=“InputTrianguloIscoceles2”>
<br> Escribe cuanto mide el lado B de tu Triangulo
</label>
<input id=“InputTrianguloIscoceles2” type=“number”>
<label for=“InputTrianguloIscoceles3”>
<br> Escribe cuanto mide el lado C de tu Triangulo
</label>
<input id=“InputTrianguloIscoceles3” type=“number”>
<button type=“button” onclick=“calcularAlturaIscoceles()”>
Calcula la altura del triangulo Isósceles
</button>
JS:
//Calcula la altura de un triangulo Isósceles.
function alturaTrianguloIscoceles(lado1, lado2, base){
return Math.sqrt((lado1*lado2)-((base*base)/4));
}
function calcularAlturaIscoceles(){
const input = document.getElementById("InputTrianguloIscoceles");
const value = parseInt(input.value);
const input2 = document.getElementById("InputTrianguloIscoceles2");
const value2 = parseInt(input2.value);
const input3 = document.getElementById("InputTrianguloIscoceles3");
const value3 = parseInt(input3.value);
if(value==value2 && value!=value3 && value2!=value3){
const altura = alturaTrianguloIscoceles(value, value2, value3);
alert("El calculo de la altura es: "+ altura);
}else{
alert("Los lados A y B no son iguales, no es un triangulo Iscoceles");
}
¡Cumplido!
Aún no leo la solución de David. Antes les comparto la mía.
Mi función verifica que el triángulo sea isósceles, sin importar el orden en que las dimensiones de sus aristas fueron ingresadas, retorna el valor de los lados que son iguales y, en base a éste valor, calcula la altura del triángulo. Use uina función anidada.
function triangleHeight(){
const traingleEdgeOne = document.getElementById("triangle_edge_one");
const traingleEdgeTwo = document.getElementById("triangle_edge_two");
const traingleEdgeThree = document.getElementById("triangle_edge_three");
const edgeOneValue = parseInt(traingleEdgeOne.value);
const edgeTwoValue = parseInt(traingleEdgeTwo.value);
const edgeThreeValue = parseInt(traingleEdgeThree.value);
function calculateHeight(equalEdgesValue){
var heightValue = (equalEdgesValue**2 - (equalEdgesValue/2)**2)**(1/2);
alert(heightValue);
}
if (edgeOneValue == edgeTwoValue) {
calculateHeight(edgeOneValue);
}
elseif (edgeOneValue == edgeThreeValue){
calculateHeight(edgeOneValue);
}
elseif (edgeTwoValue == edgeThreeValue){
calculateHeight(edgeTwoValue);
}
else {
alert("Su triángulo no es isóceles, por lo que no pudimos calcular la altura del mismo.")
}
}
// ISOSCELES TRIANGLEfunction heightIsoscelesTriangle(side, base){
if (side * 2 <= base) {
console.log(`The double of the length of the side must be greater than the base's`);
} else {
const hypotenuse = side;
const cathetus = base / 2;
const height = Math.sqrt(hypotenuse ** 2 - cathetus ** 2);
return console.log(height);
}
}
<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8" /><metahttp-equiv="X-UA-Compatible"content="IE=edge" /><metaname="viewport"content="width=device-width, initial-scale=1.0" /><title>Figuras Geométricas | Curso Práctico de JavaScript</title></head><body><header><h1>Figuras geométricas</h1><p>Este es el primer taller del curso práctico de JavaScript</p></header><section><h2>Calcula el área y perímetro de un cuadrado</h2><form><labelfor="InputCuadrado"
>Escribe cuánto mide cada lado de tu cuadrado</label
>
<inputtype="number"id="InputCuadrado" /><buttontype="button"onclick="calcularPerimetroCuadrado()">
Calulcar Perímetro
</button><buttontype="button"onclick="calcularAreaCuadrado()">
Calulcar Área
</button></form></section><section><h2>Calcula el área y perímetro de un triángulo</h2><form><labelfor="InputTrianguloLado1"
>Escribe cuánto mide el lado 1 de tu triángulo</label
>
<inputtype="number"id="InputTrianguloLado1" /><labelfor="InputTrianguloLado2"
>Escribe cuánto mide el lado 2 de tu triángulo</label
>
<inputtype="number"id="InputTrianguloLado2" /><labelfor="InputTrianguloBase"
>Escribe cuánto mide la base de tu triángulo</label
>
<inputtype="number"id="InputTrianguloBase" /><buttontype="button"onclick="calcularPerimetroTriangulo()">
Calulcar Perímetro
</button><buttontype="button"onclick="definirTipoTriangulo()">
Calulcar Área
</button></form></section><section><h2>Calcula el área y perímetro de un círculo</h2><form><labelfor="InputCiculo"
>Escribe cuánto mide el radio de tu círculo</label
>
<inputtype="number"id="InputCiculo" /><buttontype="button"onclick="calcularPerimetroCirculo()">
Calulcar Perímetro
</button><buttontype="button"onclick="calcularAreaCirculo()">
Calulcar Área
</button></form></section><scriptsrc="./figuras.js"></script></body></html>
JavaScript
//Código del cuadrado//perimetro cuadradoconst perimetroCuadrado = (lado) => lado * 4;
//area cuadradoconst areaCuadrado = (lado) => lado * lado;
//Código del triángulo//perimetro trianguloconst perimetroTriangulo = (lado1, lado2, base) => lado1 + lado2 + base;
//area triangulo isoscelesconst areaTrianguloIsosceles = (base, altura) => (base * altura) / 2;
//area triangulo equilateroconst areaTrianguloEquilatero = (lado) =>
(Math.sqrt(3) / 4) * Math.pow(lado, 2);
//Código del círculo//circunferenciaconst perimetroCirculo = (radio) => radio * 2 * Math.PI;
//area circuloconst areaCirculo = (radio) =>Math.PI * (radio * radio);
//interactuar con HTML//imprimir perimetro de cuadradofunctioncalcularPerimetroCuadrado() {
const inputLado = parseFloat(document.getElementById("InputCuadrado").value);
const perimetro = perimetroCuadrado(inputLado);
alert(perimetro);
}
//imprimir area de cuadradofunctioncalcularAreaCuadrado() {
const inputLado = parseFloat(document.getElementById("InputCuadrado").value);
const area = areaCuadrado(inputLado);
alert(area);
}
//imprimir el perimetro del triangulofunctioncalcularPerimetroTriangulo() {
const inputLado1 = parseFloat(
document.getElementById("InputTrianguloLado1").value
);
const inputLado2 = parseFloat(
document.getElementById("InputTrianguloLado2").value
);
const inputBase = parseFloat(
document.getElementById("InputTrianguloBase").value
);
const perimetro = perimetroTriangulo(inputLado1, inputLado2, inputBase);
alert(perimetro);
}
//definir el tipo de triangulo y calcular su areafunctiondefinirTipoTriangulo() {
const inputLado1 = parseFloat(
document.getElementById("InputTrianguloLado1").value
);
const inputLado2 = parseFloat(
document.getElementById("InputTrianguloLado2").value
);
const inputBase = parseFloat(
document.getElementById("InputTrianguloBase").value
);
if (inputLado1 == inputLado2 && inputLado1 != inputBase) {
//triangulo isoscelesconst altura = calcularAlturaTriangulo(inputLado1, inputBase);
const area = areaTrianguloIsosceles(inputBase, altura);
alert(area);
} elseif (inputLado1 == inputLado2 && inputLado1 == inputBase) {
//triangulo equilateroconst area = areaTrianguloEquilatero(inputBase);
alert(area);
} else {
alert(`Los lados del triángulo deben ser iguales`);
}
}
//calcular altura del triangulo isoscelesfunctioncalcularAlturaTriangulo(lado, base) {
const baseReal = base / 2;
//l^2 = b^2 + a^2//l^2 - b^2 = a^2//sqr(l^2 - b^2) = aconst altura = Math.sqrt(Math.pow(lado, 2) - Math.pow(baseReal, 2));
return altura;
}
//imprimir el perimetro de un circulofunctioncalcularPerimetroCirculo() {
const inputRadio = parseFloat(document.getElementById("InputCiculo").value);
const perimetro = perimetroCirculo(inputRadio);
alert(perimetro);
}
//imprimir el perimetro de un circulofunctioncalcularAreaCirculo() {
const inputRadio = parseFloat(document.getElementById("InputCiculo").value);
const area = areaCirculo(inputRadio);
alert(area);
}
Nota ☢☢🚧: Haciendo pruebas en la función del profe encontré en error debido a que solo se están calculando dos lados iguales cuando deberían de ser todos los lados iguales(esto es propio de un triángulo isosceles o equilatero).
// calculo de medidas del cuadradofunction cuadrado(){
let m= document.getElementById("mcu").value;
let a= m*2let p= m*4if(m>0){
document.getElementById("acu").value=a.toFixed(2)+"Cm^2"
document.getElementById("pcu").value=p.toFixed(2)+"Cm"
}else{
alert("inserte un numero valido")
}
}
// calculo de medidas del triangulofunction triangulo(){
const a =parseInt(document.getElementById("a").value);
const b =parseInt(document.getElementById("b").value);
const c =parseInt(document.getElementById("c").value);
var tT =document.getElementById("tTriangulo").innerHTML;
// equilateroif(a===b && b===c && c===a){
let raiz= Math.sqrt(3)
let h= (a*raiz)/4let ar= (h*a)/2let p= a*3
document.getElementById("atr").value=ar.toFixed(2)+"Cm^2";
document.getElementById("at").value=h.toFixed(2)+"Cm";
document.getElementById("pt").value=p.toFixed(2)+"Cm";
console.log(h)
document.getElementById("tTriangulo").innerHTML="Es un triangulo equilatero"
}
//isoceleselseif(a===b && a!==c || b===c && b!==a || c===a && c!==b){
let p=a+b+c;
if(a===b && a!==c){
let ar=(c/4)*Math.sqrt(4*(a*a)-(c*c))
let h= 2*(ar/c)
document.getElementById("at").value=h.toFixed(2)+"Cm";
document.getElementById("atr").value=ar.toFixed(2)+"Cm^2";
}
elseif(b===c && b!==a){
let ar=(a/4)*Math.sqrt(4*(b*b)-(a*a))
let h= 2*(ar/a)
document.getElementById("at").value=h.toFixed(2)+"Cm";
document.getElementById("atr").value=ar.toFixed(2)+"Cm^2";
}
elseif(c===a && c!==b){
let ar=(b/4)*Math.sqrt(4*(a*a)-(b*b))
let h=2*(ar/b)
document.getElementById("at").value=h.toFixed(2)+"Cm";
document.getElementById("atr").value=ar.toFixed(2)+"Cm^2";
}
document.getElementById("pt").value=p.toFixed(2)+"Cm";
document.getElementById("tTriangulo").innerHTML="Es un triangulo isoceles"
}
// escalenoelseif(a!==b!==c){
let p=a+b+c;
let s= p/2let ar= Math.sqrt(s*(s-a)*(s-b)*(s-c))
let h= (2/c)*ar
document.getElementById("at").value=h.toFixed(2)+"Cm";
document.getElementById("atr").value=ar.toFixed(2)+"Cm^2";
document.getElementById("pt").value=p.toFixed(2)+"Cm";
document.getElementById("tTriangulo").innerHTML="Es un triangulo escaleno"
}
}
// calculo de medidas del circulofunction circulo(){
let d= document.getElementById("mc").value;
let PI= Math.PI
let expd= Math.pow(d,2)
let r= d/2let expr= Math.pow(r,2)
let a= PI*expr
let p= PI*expd
if(d>0){
document.getElementById("rc").value=r.toFixed(2)+"Cm"
document.getElementById("ac").value=a.toFixed(2)+"Cm^2"
document.getElementById("pc").value=p.toFixed(2)+"Cm"
}else{
alert("inserte un numero valido")
}
}
Bajo la premisa de la formula para sacar la altura de un triángulo isósceles según la pagina:
function alturaTriangulo(ladoa,ladob,baset) {
const altura=Math.sqrt((ladoaladoa)-((basetbaset)/4));
if(ladoa=ladob && baset!=ladoa && baset!=ladob)
{
return alert("La altura del Triángulo Isóseles: "+altura);;
}else{
alert(“Lo que ingresaste no es un Triángulo Isóseles”);
}
}
Primero IDENTIFICO si hay igualdad en dos números (DE LO CONTRARIO SERÍAN ESCALENOS)
Luego veo si los lados iguales IDENTIFICADOS no son iguales al otro lado (DE LO CONTRARIO SERÍAN EQUILATEROS)
Luego miro si la suma de los dos lados iguales es mayor al lado diferente que sería la base, que puede ser lado1, lado2 o lado3 (DE LO CONTRARIO NO FORMARÍA UN TRIÁNGULO)
functionalturaTriangulo (lado1, lado2, lado3) {
if (lado1 == lado2 && lado1 != lado3) {
const media = (lado3 / 2);
altura = Math.sqrt((lado1 * lado1) - (media * media));
if (lado1 + lado2 > lado3) console.log(altura);
elseconsole.log('No es un triángulo');
} elseif (lado1 == lado3 && lado1 != lado2) {
const media = (lado2 / 2);
altura = Math.sqrt((lado1 * lado1) - (media * media));
if (lado1 + lado3 > lado2) console.log(altura);
elseconsole.log('No es un triángulo');
} elseif (lado2 == lado3 && lado2 != lado1) {
const media = (lado2 / 2);
altura = Math.sqrt((lado1 * lado1) - (media * media));
if (lado2 + lado3 > lado1) console.log(altura);
elseconsole.log('No es un triángulo');
} else {
console.log('No es un triángulo isósceles');
}
}
alturaTriangulo(8, 8, 10); //6.244997998398398
function highIsocelesTriangle(side, secSide, base){
if (side !== secSide) {
console.log("Tu triangulo no es Isoceles");
}
else{
let c=base/2;
let high=Math.sqrt((c*c)+(side*side));
return high;
}
}
highIsocelesTriangle(4, 4, 6);
Hago uso del método Math.pow para elevar dando como primer parámetro el número a elevar (base) y como segundo parámetro (despues de la coma) el exponente.
Ej: Math.pow(3,2) esto es 3 elevado a 2 lo que sería 9.
functionisosceles(ladoA, ladoB, base){
if (ladoA === ladoB){
const altura = Math.sqrt( Math.pow(ladoA, 2) - (Math.pow(base/2, 2)) );
return altura;
}
else{ return"No es un triangulo isósceles"};
}
console.log(isosceles(3,3,4));
const validarAlturaTipoTriangulo = (a, b, c) => {
const tipoTriangulos = ['Equilatero', 'Isósceles', 'Escaleno'];
let valorTipo = 0;
let h = 0;
if (a === b && a === c) {
valorTipo = 0;
h = Math.sqrt(3*a)/2;
} elseif ((a === b && a !== c) || (a === c && a !== b) || (b === c && a !== b)) {
if (a === b) {
h = Math.sqrt(Math.pow(a, 2) - (Math.pow(c, 2) / 4));
} elseif (a === c) {
h = Math.sqrt(Math.pow(a, 2) - (Math.pow(b, 2) / 4));
} else {
h = Math.sqrt(Math.pow(b, 2) - (Math.pow(a, 2) / 4));
}
valorTipo = 1;
} else {
valorTipo = 2;
h = (a * b)/ c;
}
const tipoTriangulo = tipoTriangulos[valorTipo];
return { valorTipo, tipoTriangulo, altura: h.toFixed(2)};
}
function calculaTrianguloIsoceles(lado1,lado2,base){
if(lado1===lado2 && lado1 != base){
const altura = (Math.sqrt(lado1**2 -(base**2/4)))
console.log("Es un triangulo isoceles y su altura es: "+altura)
}else{
console.log("los lados no son iguales")
}
}
function verificarIsosceles() {
let lado = document.getElementById("ValorLado").value;
let lado2 = document.getElementById("ValorLado2").value;
let base = document.getElementById("base").value;
if(lado == lado2) {
let altura = Math.sqrt(lado * lado - Math.pow(base/2, 2));
alert("la altura del triangulo es: " + altura)
}
else{
alert("no es un triangulo isoceles");
}
}
SPOILER ALERT creo que mi opción es menos espagueti:
// función para calcular altura. Noten que solo pido la altura de uno de los lados.functionalturaTrianguloIsoceles(lado,base){
alturaA = (lado ** 2) - ((base / 2) ** 2)
returnMath.sqrt(alturaA);
}
// Función para llamar a la función matemática a partir de los inputs y hacer la validación (sólo se puede utilizar el boton "calcular altura triangulo isoceles" si ambos lados son iguales).functioncalcularAlturaTrianguloIsoceles(){
const inputT1 = document.getElementById("inputTriangulo1");
const inputT2 = document.getElementById("inputTriangulo2");
const inputTB = document.getElementById("inputTrianguloB");
const valueT1 = inputT1.value;
const valueT2 = inputT2.value;
const valueTB = inputTB.value;
if (valueT1 === valueT2){
let resultado = alturaTrianguloIsoceles(valueT1,valueTB);
alert(resultado)
} else {
alert("Los lados deben ser iguales para calcular un triángulo isoceles.");
}
}
Si a alguien se le hizo difícil entender la explicación, o razonamiento del profesor, dejaré cómo logré entenderlo por aquí
Tenemos que tener en cuenta que tenemos un triángulo isósceles, que tiene dos lados iguales y uno diferente. No tenemos su altura. Pero sabemos que la mitad de esté tipo de triangulo, es un triángulo rectángulo y con este podemos obtener la altura.
Para eso revisamos el teorema de Pitágoras, en la que nos habla de que un triángulo rectángulo tiene un ángulo recto (90°) y dos ángulos menores (<90°). Y además, e importante para este ejercicio, los dos lados que forman el ángulo recto son catetos. El lado mayor opuesto al ángulo recto es la hipotenusa.
Entonces revisamos, nuestro triángulo rectángulo del ejercicio
Dónde h(Que sería la altura) y b son los catetos que forman el ángulo recto de (90°), y c es la hipotenusa. Por tanto, no tenemos que buscarla, pero podemos utilizar la fórmula de la hipotenusa para encontrar la altura que es nuestra incógnita.
No se si es más complicado esto… pero lo hice con lo que sé hasta el momento, es válido gente, denme sus opiniones por fa:
HTML
<formaction=""><labelfor="lado1">
Lado 1:
</label><inputid="lado1"type="number"><p></p><labelfor="lado1">
Lado 2:
</label><inputid="lado2"type="number"><p></p><labelfor="lado1">
Lado 3:
</label><inputid="lado3"type="number"><p></p><buttontype="button"onclick="alturaTriangulo()">Calcular Altura</button></form>
JS
function alturaTriangulo(){
const lado1 = document.getElementById("lado1").value;
const lado2 = document.getElementById("lado2").value;
const lado3 = document.getElementById("lado3").value;
if(lado1 === lado2){
varbase = lado3;
var ladoA = lado1;
var ladoB = lado2;
const alturaT = Math.sqrt((ladoA * ladoB)-((base * base)/4));
alert(alturaT);
}elseif(lado2 === lado3){
varbase = lado1;
var ladoA = lado2;
var ladoB = lado3;
const alturaT = Math.sqrt((ladoA * ladoB)-((base * base)/4));
alert(alturaT);
}elseif(lado1 === lado3){
varbase = lado2;
var ladoA = lado1;
var ladoB = lado3;
const alturaT = Math.sqrt((ladoA * ladoB)-((base * base)/4));
alert(alturaT);
} else {
alert("No es un triángulo isósceles, por favor ingresa al menos 2 valores de lado iguales.");
};
};
Creo que simplifique mucho las cosas, pero así me quedó. Lo que hice fue forzar un triángulo isósceles haciendo que el usuario solo pueda poner 2 valores, uno de los lados y la base, esto con la justificación de que los triángulos isósceles tienen 2 lados iguales y el otro es distinto que sería la base.
El resultado del primer taller está en este link https://santiagobr.github.io/curso-practico-javascript/figuras.html y me demoré aprox 4 días dedicandole 3 a 4 horas por día. Quisé de una vez hacer todo el diseño que fue de las cosas que más tarde por cuadrar los media queries y otras cosas, pero me gusto como quedó.
La idea es ingresar las dimenciones de los lados en cuanquier orden. Funciona si hay al menos 2 lados iguales.
const calcularAlturaIso = (lado1, lado2, lado3) =>{
letbase = 0let lado
if(lado1 * lado2 * lado3 <= 0){
alert('Todos los lados deben tener una longitud mayor a 0.')
} else {
// Identificación de la base y comprovación de lados iguales.if(lado1 == lado2){
base = lado3
lado = lado1
}elseif(lado1 == lado3){
base = lado2
lado = lado1
}elseif(lado2 == lado3){
base = lado1
lado = lado2
}
// Validación de la base y longitud inferior a la suma de los lados restantes.if(base == 0 || base >= (lado * 2)){
alert('¡Error! Un triángulo isosceles, tiene al menos dos lados iguales.')
} else {
alert(`La altura del triángulo isosceles es: ${Math.sqrt(Math.pow(lado, 2) + Math.pow((base/2), 2))}`)
}
}
}
En la función solo estoy conciderando la regla de que ambos lados tienen que ser iguales, aqui se podria agregar la proporción que estos deben tener, pero dejemos la clase de algebra para otro momento :S
function alturaTrianguloIsoceles(l1, l2, b){
var height;
if (l1==l2){
height = Math.sqrt((l1^2) - ((b^2)/4));
} else{
height = 0;
alert("The sides aren't equals, those measurements do not correspond to a Isoceles Triangle")
}
return height;
}
//Función que calcula la altura cuando los lados son ingresadosfunctionalturaIsoTriang(a,b,base) {
if (a!=b) {
console.error("Los lados a y b no son iguales");
alert("Los lados a y b deben ser iguales. Intenta de nuevo");
} else {
returnMath.sqrt((a*a)-((base*base)/4));
}
}
//Función que interactúa con HTMLvar h='';
functioncalcularAlturaTriangulo() {
const inputL1 = document.getElementById("InputLado1");
const valueL1 = inputL1.value;
const inputL2 = document.getElementById("InputLado2");
const valueL2 = inputL2.value;
const inputB = document.getElementById("InputBase");
const valueB = inputB.value;
const altura = alturaIsoTriang(valueL1, valueL2, valueB);
alert(altura.toFixed(4));
h= altura;
}
function trianguloIsoceles(lado1, lado2, base) {
let a = lado1;
let b = lado2;
let c = base;
if (a === b && a != base) {
let d = c / 2;
let p = Math.pow(b, 2);
let o = Math.pow(d, 2);
let h = p - o;
let u = Math.sqrt(h);
alert(u);
} else {
alert("NO es un triangulo isóceles");
}
}
trianguloIsoceles(5, 5, 8);
Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.