• Viernes 29 de Marzo de 2024, 12:57

Autor Tema:  Funciones C++  (Leído 3555 veces)

Alehtokita

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Funciones C++
« en: Martes 13 de Marzo de 2012, 18:12 »
0
Alguíen me podría ayudar con un programa en c++ que calcule al área de un triangulo conociendo los tres lados con funciones!
 :ayuda:

caperutxa

  • Miembro activo
  • **
  • Mensajes: 40
  • Nacionalidad: 00
    • Ver Perfil
Re:Funciones C++
« Respuesta #1 en: Miércoles 14 de Marzo de 2012, 09:21 »
0
Teoria:   http://es.wikipedia.org/wiki/%C3%81rea#.C3.81rea_de_un_tri.C3.A1ngulo
Si se conoce la longitud de sus lados, se puede aplicar la fórmula de Herón.
    A = \sqrt{s(s-a)(s-b)(s-c)}
donde a, b, c son los valores de las longitudes de sus lados, s = ½ (a + b + c) es el semiperimetro del triángulo.

Hace bastante que no programo en C++ así que revisa la sintaxis, pero será algo similar a esto:

function double Area(double a, double b, double c){
    double s = 0.5*(a+b+c);
    dobule area = sqrt(s(s-a)(s-b)(s-c));
    return area;
}
Si quieres obtener resultados diferentes no hagas siempre lo mismo.


Alehtokita

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re:Funciones C++
« Respuesta #2 en: Miércoles 14 de Marzo de 2012, 18:42 »
0
Gracias por el dato! me sirvió mucho pero necesito que cumpla estas tres condiciones:
a+b>c
b+c>a
a+c>b
me imagino que es con un if pero no sé como sería la forma de ubicarlo teniendo en cuenta las funciones. Este es el programa que tengo hasta ahora:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void imprimir_resultados (int, int, int, float);
double calcular_area (int, int, int);
int main()

{
    int a;
    int b;
    int c;
    float Area;

    printf("Ingrese primer lado: \n\n");
    scanf("%d", &a);
     printf("Ingrese el segundo lado: \n\n");
    scanf("%d", &b);
     printf("Ingrese el tercer lado: \n\n");
    scanf("%d", &c);

    Area=calcular_area(a,b,c);
    imprimir_resultados(a,b,c,Area);

    return EXIT_SUCCESS;
}

double calcular_area(int a, int b, int c)
{
    int s= ((a+b+c)/2);
    float Area=sqrt(s*((s-a)*(s-b)*(s-c)));
    return Area;
}
void imprimir_resultados(int a, int b, int c, float Area)
{
    printf("\n");
    printf("El area es %f \n",Area);
    return EXIT_SUCCESS;
}

caperutxa

  • Miembro activo
  • **
  • Mensajes: 40
  • Nacionalidad: 00
    • Ver Perfil
Re:Funciones C++
« Respuesta #3 en: Jueves 15 de Marzo de 2012, 20:49 »
0
Gracias por el dato! me sirvió mucho pero necesito que cumpla estas tres condiciones:
a+b>c
b+c>a
a+c>b
me imagino que es con un if pero no sé como sería la forma de ubicarlo teniendo en cuenta las funciones. Este es el programa que tengo hasta ahora:

Puedes declarar una variable booleana y ejecutar un bucle do/while.


bool ok = false;

do{
    printf("Ingrese primer lado: \n\n");
    scanf("%d", &a);
     printf("Ingrese el segundo lado: \n\n");
    scanf("%d", &b);
     printf("Ingrese el tercer lado: \n\n");
    scanf("%d", &c);
    if( ((a+b)>c) && ((b+c)>a) && ((a+c)>b) ){
                 ok = true;
    }else{
          printf("Valores no válidos, Vuelva a introducirlos con las condiciones adecuadas);
    }
}while(ok != true);
[/quote]
Si quieres obtener resultados diferentes no hagas siempre lo mismo.