c言語計算三角形面積コード

2991 ワード

 
  
// s = (a+b+c) / 2   area = sqrt(s * (s - a) * (s - b) * (s - c));
//

int check(double a);
int check2(double a, double b, double c);

#include
#include
int main(void)
{
    double area = 0;
    double s;
    double a,b,c;
    printf(" (a b c):");
    scanf("%lf %lf %lf", &a, &b, &c);
    if (check(a) == 1 && check(b) == 1 && check(c) ==1)
    {
        if (check2(a,b,c) == 0)
        {
            printf(" .
\r");
            return 0;
        }
        else if (check2(a,b,c) == 1)
        {
            s = (a+b+c) / 2;
            area = sqrt(s * (s - a) * (s - b) * (s - c));
            printf(" :%g
\r",area);
        }
    }
    else
        printf(" , .
\r");
    return 0;
}

 

//
int check(double a)
{
    if (a > 0)
        return 1;
    else
        return 0;
}

//

int check2(double a, double b, double c)
{
    if ( ((a+b)<=c) | ((a+c)<=b) | ((c+b)<=a) )
        return 0;
    if (abs(a-b)>=c | abs(a-c)>=a | abs(c-b)>=a)
        return 0;
    else
        return 1;
}


考えてみれば、areaはゴミの価値ではないだろう.だからそんなに多くの行の宣言変数を書く必要はありません.....
いくつか修正しました
 
  
// s = (a+b+c) / 2   area = sqrt(s * (s - a) * (s - b) * (s - c));
//

int check(double a);
int check2(double a, double b, double c);

#include
#include
int main(void)
{
    double area,s,a,b,c;
    printf(" (a b c):");
    scanf("%lf %lf %lf", &a, &b, &c);
    if (check(a) == 1 && check(b) == 1 && check(c) ==1)
    {
        if (check2(a,b,c) == 0)
        {
            printf(" .
\r");
            return 0;
        }
        else if (check2(a,b,c) == 1)
        {
            s = (a+b+c) / 2;
            area = sqrt(s * (s - a) * (s - b) * (s - c));
            printf(" :%g
\r",area);
        }
    }
    else
        printf(" , .
\r");
    return 0;
}

 

//
int check(double a)
{
    if (a > 0)
        return 1;
    else
        return 0;
}

//

int check2(double a, double b, double c)
{
    if ( ((a+b)<=c) | ((a+c)<=b) | ((c+b)<=a) )
        return 0;
    if (abs(a-b)>=c | abs(a-c)>=a | abs(c-b)>=a)
        return 0;
    else
        return 1;
}