设计三角形问题的程序

输入三个整数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. Scripting API Samples

      Scripting API Samples Tomáš Matoušek edited this page on Jan 31 · 32 revisions Home API Changes Bu ...

  2. 关于struts2中ActionContext类的作用

    关于struts2中ActionContext类的作用有三个: 1.获取三大作用域对象及页面参数 2.是struts标签的上下文对象 3.ThreadLocal内装的就是ActionContext 怎 ...

  3. oracle与DB2

    1.体系结构,DB2的实例和数据库分开的做法,我个人还是比较喜欢的,因为实例可以创建多个,数据库的恢复直接恢复到实例下就可以了,相对ORACLE简单多了. 2.管理工具,DB2的管理工具做得太简陋了, ...

  4. eclipse项目setting文件

    项目下的.settings文件夹 org.eclipse.wst.common.component文件描述了项目发布到tomcat等web容器的基本信息 <?xml version=" ...

  5. Promise/Deferred

    [fydisk] 1.$.get('/api').success(onSuccess).error(onError).comlete(onComplete); 2.对同一事件加入多个Handler. ...

  6. 第五章 二叉树(e5)重构

  7. python的协程和异步io【select|poll|epoll】

    协程又叫做微线程,协程是一种用户态的轻量级的线程,操作系统根本就不知道协程的存在,完全由用户来控制,协程拥有自己的的寄存器的上下文和栈,协程调度切换时,将寄存器上下文和栈保存到其他地方,在切换回来后, ...

  8. day12:vcp考试

    Q221. An administrator is creating a new Platform Service Controller Password Policy with the follow ...

  9. queue,stack的相互实现

    Implement Queue using Stacks [抄题]: [思维问题]: [一句话思路]: 取头部.取出来的时候,用一个output来倒序 [输入量]:空: 正常情况:特大:特小:程序里处 ...

  10. linux 下 php 安装 event

    1.下载event源码包 https://pecl.php.net/package/event 如:event-2.0.4.tgz 2.解压 > tar zxvf event-2.0.4.tgz ...