• Sábado 21 de Diciembre de 2024, 08:25

Autor Tema:  area de triangulo  (Leído 4567 veces)

wilbur-naike

  • Miembro activo
  • **
  • Mensajes: 33
  • Nacionalidad: pe
    • Ver Perfil
area de triangulo
« en: Domingo 8 de Noviembre de 2009, 01:21 »
0
Hola a todos luego de meses de inactividad :)

Bueno les cuento que estoy llevando algoritmos y tengo una pequeña duda con un problema propuesto acerca del calculo del area de un triangulo, conociendo sus 3 lados.

Código: C
  1. algoritmo area
  2. variables:
  3. entero: a, b, c
  4. real: area, p //p: semiperimetro
  5. inicio
  6. leer(a, b, c)
  7. p <- (a+b+c) / 2
  8. area <- (p*(p-a)*(p-b)*(p-c))^(1/2)
  9. escribir (area)
  10. fin
  11.  

Bien ese fue mi proceso de hacer el calculo pero busque alguna otra informacion por internet, veo que usan funciones en la siguiente linea:
Código: C
  1. area ← raiz(p * (p-a) * (p-b) * (p-c))
  2.  

Me pregunto si lo que hago esta bien?
Uso tambien funciones?

Siguiendo aun con la duda, en este problema dice asi:
Citar
nota : considerar el valor absoluto de la diferencia ente el semiperimetro y cada uno de los lados

Pienso asi:
Código: C
  1. p1 <- (p + ((-1) *  a))
  2. p2 <- (p + ((-1) *  b))
  3. p3 <- (p + ((-1) *  c))
  4.  

En fin creo ando mal no se, que creer.  :lol:

wilbur-naike

  • Miembro activo
  • **
  • Mensajes: 33
  • Nacionalidad: pe
    • Ver Perfil
Re: area de triangulo
« Respuesta #1 en: Domingo 8 de Noviembre de 2009, 15:27 »
0
ien parece que nadie ve el tema, pero igual segui buscando mas info sobre valor absoluto y la mayoria lo hace con un estrucutura selectiva.
estructuras selectivas en monografias

El problema que hago esta dentro del tema de estructuras secuenciales, dando como finalizado el agoritmo asi:
Código: C
  1. algoritmo area
  2. variables:
  3. entero: a, b, c
  4. real: area, p //p: semiperimetro
  5. inicio
  6. leer(a, b, c)
  7. p <- (a+b+c) / 2
  8. area <- (p* ( p + ((-1) * a) * ( p + ((-1) *  b) * ( p + ((-1) * c)) ^ (1/2)
  9. escribir (area)
  10. fin
  11.  

Pero si en caso trabajara con selectiva terminaria asi.
Código: C
  1. algoritmo area
  2. variables:
  3. entero: a, b, c
  4. real: area, p //p: semiperimetro
  5. inicio
  6. leer(a, b, c)
  7. si (a < 0) entonces
  8.      a <- (-1) * a
  9. si_no
  10.     si (b < 0) entonces
  11.         b <- (-1) * b
  12.     si_no
  13.         si (c < 0) entonces
  14.              c <- (-1) * c
  15.         fin_si
  16.     fin_si
  17. fin_si
  18. p <- (a + b + c) / 2
  19. area <- (p* ( p -  a) * ( p -  b) * ( p - c)) ^ (1/2)
  20. escribir (area)
  21. fin
  22.  

opinen por fas

Xinefpro

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: area de triangulo
« Respuesta #2 en: Miércoles 7 de Abril de 2010, 20:38 »
0
Holas amigo, creo que no es necesario tratar el problema de los signos :

Mira por geometria basica, sea un Triangulo de lados : a, b, c ; se cumple lo siguiente :
Código: Java
  1.  
  2.  
  3. *   a - b < c < a + b   ... ( 1 )
  4. *   b - c < a < b + c   ... ( 2 )
  5. *   a - c < b < a + c   ... ( 3 )
  6.  
  7.  
  8.  

Luego como tu para hallar el area quieres usar la Fórmula de Herón :

Código: Java
  1.  
  2. p = (  a + b + c   ) / 2
  3. area ← raiz(p * (p-a) * (p-b) * (p-c))
  4.  
  5.  
 
Para que un producto resulte negativo uno de sus factores debe de ser negativo, entonces analizamos cada factor del producto de la formula de Heron :
Código: Java
  1.  
  2. * p = ( a + b + c )/2 > 0       //  ya que un lado triangulo solo puede tener lados positivos por ende a + b + c > 0
  3.  
  4. * ( p - a ) = ( a + b + c )/2 - a = ( b + c - a )/2  > 0          // ya que de ( 2 ) tenemos que b + c > a
  5. * ( p - b ) = ( a + b + c )/2 - b = ( a + c - b )/2  > 0          // ya que de ( 3 ) tenemos que a + c > b
  6. * ( p - c ) = ( a + b + c )/2 - c = ( a + b - c )/2  > 0          // ya que de ( 1 ) tenemos que a + b > c
  7.  
  8.  

Por lo tanto mientras los lados del triangulo sean validos ( positivos ), lo que esta dentro de la raiz nunca va a salir negativo, por ende no
tienes que preocuparte de los signos.