设计三角形问题的程序

输入三个整数a、b、c,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型为等边三角形、等腰三角形、一般三角形(特殊的还有直角三角形),以及不构成三角形。(等腰直角三角形,判断为等腰三角形)

现在要求输入三个整数a、b、c,必须满足以下条件:

条件1   1≤a≤100          条件4   a<b+ c

条件2   1≤b≤100          条件5   b<a+ c

条件3   1≤c≤100          条件6   c<a+ b

String triangle(int a,int b,int c)    返回字符型

程序要求:

1)先显示:“请输入三角形的三条边:”

2)只要有不满足条件1,2,3之一,就返回“边的值不在范围内!”

3)只要有不满足4,5,6之一,就返回“不构成三角形”

4)根据边的情况分别返回:“等边三角形”“等腰三角形”“直角三角形”“一般三角形”

 //@105032014019李悦洲
#include"iostream"
#include"string"
#include"math.h" #define DENGBIAN 0
#define DENGYAO 1
#define ZHIJIAO 2
#define YIBAN 3 #define WUCHAZHI 0.00001 using namespace std; class CTriangle
{
private:
int a;
int b;
int c;
protected:
void setTriangle(int a,int b,int c); //赋值
bool checkTheOne()const; //检查范围条件
bool checkTheTwo()const; //检查是否组成三角形
int checkType()const; //判断三角形种类
public:
string triangle(const int &a,const int &b,const int &c);//题目要求的函数
}; void CTriangle::setTriangle(int a,int b,int c)
{
this->a = a;
this->b = b;
this->c = c;
} bool CTriangle::checkTheOne()const//检查范围条件
{
if((a>=&&a<=)&&(b>=&&b<=)&&(c>=&&c<=))
return true;
else
return false;
}
bool CTriangle::checkTheTwo()const//检查是否组成三角形
{
if((a<(b+c))&&(b<(a+c))&&(c<(a+b)))
return true;
else
return false;
}
int CTriangle::checkType()const//判断三角形种类
{
if(a==b&&a==c&&b==c)
return DENGBIAN;
if(a==b||a==c||b==c)
return DENGYAO;
if(a*a+b*b==c*c||a*a==b*b+c*c||b*b==a*a+c*c)
return ZHIJIAO;
return YIBAN;
}
string CTriangle::triangle(const int &a,const int &b,const int &c)//题目要求的函数
{
setTriangle(a,b,c);
if(!checkTheOne())
{
return "边的值不在范围内!";
}
else if(!checkTheTwo())
{
return "不构成三角形";
}
switch(checkType())
{
case DENGBIAN: return "等边三角形";
case DENGYAO: return "等腰三角形";
case ZHIJIAO: return "直角三角形";
case YIBAN: return "一般三角形";
}
return "ERROR?";
} bool inputInteger(int &a,int &b,int &c) //完成用户输入并且判断是否输入整数,返回输入是否合法
{
int i = ;
double d[] = {0.0f};
if (scanf("%lf,%lf,%lf",&d[],&d[],&d[])!=)
{
return false;
}
for(i=;i<;i++)
{
if(fabs((double)(int)d[i]-d[i])>WUCHAZHI)
{
return false;
}
}
a = d[];
b = d[];
c = d[];
} int main()//测试代码
{
CTriangle Test;
int a,b,c;
printf("请输入三角形的三条边\n");
if(inputInteger(a,b,c))
{
cout<<Test.triangle(a,b,c)<<endl;
}
else printf("输入信息错误\n");
return ;
}

尝试编写测试用例集,预期能找到常见的缺陷。填写以下表格。(行数可以自己增加)

序号

测试者的行为和数据

期待结果

1

3,6,5

一般三角形

2

4,4,5

等腰三角形

3

3,3,3

等边三角形

4

“a”3,4

错误提示信息

5

3,4,1.235

错误提示信息

 6  123847219347,,1587295187,9 错误提示信息
 7  !@#¥@#¥ 错误提示信息

UT源码+019的更多相关文章

  1. UT源码 005

    NextDate函数问题 NextDate函数说明一种复杂的关系,即输入变量之间逻辑关系的复杂性 NextDate函数包含三个变量month.day和year,函数的输出为输入日期后一天的日期. 要求 ...

  2. UT源码105032014093

    需求描述: 设计佣金问题的程序 commission方法是用来计算销售佣金的需求,手机配件的销售商,手机配件有耳机(headphone).手机壳(Mobile phone shell).手机贴膜(Ce ...

  3. UT源码+105032014070

    设计三角形问题的程序 输入三个整数a.b.c,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型为等边三角形.等腰三角形.一般三角形(特殊的还有直角三角形),以及不构成三角形.(等腰直角 ...

  4. UT源码 065

    NextDate函数问题 NextDate函数说明一种复杂的关系,即输入变量之间逻辑关系的复杂性 NextDate函数包含三个变量month.day和year,函数的输出为输入日期后一天的日期. 要求 ...

  5. UT源码105032014098

    (2)NextDate函数问题 NextDate函数说明一种复杂的关系,即输入变量之间逻辑关系的复杂性 NextDate函数包含三个变量month.day和year,函数的输出为输入日期后一天的日期. ...

  6. UT源码-124

    (1)设计三角形问题的程序 输入三个整数a.b.c,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型为等边三角形.等腰三角形.一般三角形(特殊的还有直角三角形),以及不构成三角形.(等 ...

  7. UT源码 105032014098

    package exam1; import java.util.Scanner; public class test01 { static String nextDate(int year,int m ...

  8. UT源码_105032014033

    需求描述: 设计佣金问题的程序 commission方法是用来计算销售佣金的需求,手机配件的销售商,手机配件有耳机(headphone).手机壳(Mobile phone shell).手机贴膜(Ce ...

  9. UT源码162

    (3)设计佣金问题的程序 commission方法是用来计算销售佣金的需求,手机配件的销售商,手机配件有耳机(headphone).手机壳(Mobile phone shell).手机贴膜(Cellp ...

随机推荐

  1. SpringDataRedis事务 专题

    5.10.1. @Transactional SupportTransaction Support is disabled by default and has to be explicitly en ...

  2. spark开启远程调试

    一.集群环境配置 #调试Master,在master节点的spark-env.sh中添加SPARK_MASTER_OPTS变量 export SPARK_MASTER_OPTS="-Xdeb ...

  3. day4:vcp考试

    Q61. Which two statements are true regarding Virtual SAN Fault Domains? (Choose two.)A. They enable ...

  4. swift - 画图 - 画矩形,虚线,圆和半圆

    import UIKit class JYJYBouncedCouponsViewCellBgView: UIView { //一定要在这里设置 背景色, 不要再draw里面设置, override ...

  5. [leetcode]318. Maximum Product of Word Lengths单词长度最大乘积

    Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the tw ...

  6. PHP下ajax跨域的解决方案之CORS

    由于安全的限制(同源策略,javascript只能访问同域名下的内容),如果需要进行跨域操作,那就免不了要进行跨域.   CORS(跨域资源共享,Cross-Origin Resource Shari ...

  7. samba配置(z)

    http://www.cnblogs.com/mchina/archive/2012/12/18/2816717.html

  8. jQuery控制TR显示隐藏

    参考链接:http://www.jb51.net/article/51221.htm 通过jQuery的hide和show方法即可.

  9. Alluxio/Tachyon如何发挥lineage的作用?

    在Spark的RDD中引入过lineage这一概念.指的是RDD之间的依赖.而Alluxio则使用lineage来表示文件之间的依赖.在代码层面,指的是fileID之间的依赖. 代码中的注释指出: * ...

  10. HDFS高可用性及其分布式系统思想基础

    源自单点失效问题,也就是当NameNode不可用的时候,用什么办法可以平滑过渡? 最直接的办法是再添加一个备用的NN,这就产生了Active NameNode和Standby NameNode的设计思 ...