|
5#
楼主 |
发表于 2008-9-7 13:07:33
|
只看该作者
5编码
1、Triangle.h
/*
* Copyright (c) 2008, 胡添发(hutianfa@163.com)
*
* 三角形类型判断
*
*/
#include<stdio.h>
#include<String.h>
/*
* 判断一个整数是否在(0, 200)区间内
* 返回值:true-否; false-是
*/
bool isOutOfRange(int i);
/*
* 判断三条边是否合法(即:判断三条边都在合法的范围内)
* 返回值:true-是; false-否
*/
bool isLegal(int a, int b, int c);
/*
* 判断两条边之和是否大于第三边
* 返回值:true-是; false-否
*/
bool isSumBiger(int a, int b, int c);
/*
* 判断三条边是否能够组成三角形
* 返回值:true-是; false-否
*/
bool isTriangle(int a, int b, int c);
/*
* 判断两条边是否相等
* 返回值:true-是; false-否
*/
bool isEquals(int a, int b);
/*
* 求三角形有几条边相等
* 返回值:相等边的数量
*/
int howManyEquals(int a, int b, int c);
/*
* 判断是否满足两边平方之和是否等于第三边的平方
*
*/
bool isPowerSumEquals(int a, int b, int c);
/*
* 判断第一个数是否比第二个数大
*/
bool isGreaterThan(int a, int b);
/*
* 判断是否是直角三角形
*
*/
bool isRightRriangle(int a, int b, int c);
/*
* 判断三角形的类型,返回值:
* 1、不能组成三角形
* 2、等边三角形
* 3、等腰三角形
* 4、直角三角形
* 5、一般三角形
* 6、某些边不满足限制
*/
int triangleType(int a, int b, int c);
2、Triangle.cpp
/*
* Copyright (c) 2008, 胡添发(hutianfa@163.com)
*
* 三角形类型判断
*
*/
#include<stdio.h>
#include<String.h>
/*
* 判断一个整数是否在(0, 200)区间内
* 返回值:true-否; false-是
*/
bool isOutOfRange(int i)
{
if(0<i && i<200)
{
return false;
}
else
{
return true;
}
};
/*
* 判断三条边是否合法(即:判断三条边都在合法的范围内)
* 返回值:true-是; false-否
*/
bool isLegal(int a, int b, int c)
{
if(isOutOfRange(a) || isOutOfRange(b) || isOutOfRange(c))
{
return false;
}
return true;
}
/*
* 判断两条边之和是否大于第三边
* 返回值:true-是; false-否
*/
bool isSumBiger(int a, int b, int c)
{
if(a+b > c)
{
return true;
}
return false;
}
/*
* 判断三条边是否能够组成三角形
* 返回值:true-是; false-否
*/
bool isTriangle(int a, int b, int c)
{
if(isSumBiger(a, b, c) && isSumBiger(a, c, b) && isSumBiger(b, c, a))
{
return true;
}
return false;
}
/*
* 判断两条边是否相等
* 返回值:true-是; false-否
*/
bool isEquals(int a, int b)
{
if(a==b)
{
return true;
}
return false;
}
/*
* 求三角形有几条边相等
* 返回值:相等边的数量
* 1:没有边相等 2:只有两条边相等 3:三条边相等
*
*/
int howManyEquals(int a, int b, int c)
{
int count = 1;
if(isEquals(a,b))
{
count++;
}
if(isEquals(b,c))
{
count++;
}
if(isEquals(a,c))
{
count++;
}
if(count > 3) //如果三条边都相等,则count多加了一次
{
count = 3;
}
return count;
}
/*
* 判断是否满足两边平方之和是否等于第三边的平方
*
*/
bool isPowerSumEquals(int a, int b, int c)
{
if(a*a + b*b == c*c)
{
return true;
}
return false;
}
/*
* 判断第一个数是否比第二个数大
*/
bool isGreaterThan(int a, int b)
{
if(a>b)
{
return true;
}
return false;
}
/*
* 判断是否是直角三角形
*
*/
bool isRightRriangle(int a, int b, int c)
{
int max = 0;
if(isGreaterThan(a, b))
{
max = a;
a = b;
b = max;
}
if(isGreaterThan(b, c))
{
max = b;
b = c;
c = max;
}
return isPowerSumEquals(a, b, c);
}
/*
* 判断三角形的类型,返回值:
* 1、不能组成三角形
* 2、等边三角形
* 3、等腰三角形
* 4、直角三角形
* 5、一般三角形
* 6、某些边不满足限制
*/
int triangleType(int a, int b, int c)
{
int type=0;
if(isLegal(a, b, c))
{
if(isTriangle(a, b, c))
{
int num = howManyEquals(a, b, c);
if(3==num)
{
type=2;
}
else if(2==num)
{
type=3;
}
else if(isRightRriangle(a, b, c))
{
type=4;
}
else
{
type=5;
}
}
else
{
type=1;
}
}
else
{
type=6;
}
return type;
} |
|