萌萌的代码君奉上!
首先是triangle.h:
#ifndef TRIANGLE_H_INCLUDED
#define TRIANGLE_H_INCLUDED
class Triangle
{
public:
inline void setA(double);
inline void setB(double);
inline void setC(double);
inline double getA();
inline double getB();
inline double getC();
double perimeter();
double area();
bool isTriangle();
private:
double a,b,c;
};
double Triangle::getA()
{
return a;
}
double Triangle::getB()
{
return b;
}
double Triangle::getC()
{
return c;
}
void Triangle::setA(double x)
{
a=x;
}
void Triangle::setB(double y)
{
b=y;
}
void Triangle::setC(double z)
{
c=z;
}
#endif // TRIANGLE_H_INCLUDED
大家是否看到在头文件中包含了函数的定义呢?一般函数定义都是包含在源文件里面的,可为什么会在头文件里呢?
答案是:大家仔细看看就会看出来所有在头文件里面定义的函数都是传说中的内置函数,如果在源文件中定义内置函数,那么编译器会告诉你各种warning,如下:
作为有着轻微强迫症的人,虽然一时半会看不懂这些warning啥意思,但是总感觉很不舒服,而如果把这些内置函数放在头文件中定义就不会出现这样的情况,所以就这么做了,不知道是否符合规则或约定。
然后是define.cpp:
#include <cmath>
#include "triangle.h"
bool Triangle::isTriangle()
{
if(a+b<=c||a+c<=b||b+c<=a)
return false;
else
return true;
}
double Triangle::perimeter()
{
return a+b+c;
}
double Triangle::area()
{
double p=(a+b+c)/2;
return sqrt(p*(p-a)*(p-b)*(p-c));
}
如同大家看到的,这里面并没有那些内置函数的定义。
最后是main:
#include <iostream>
#include "triangle.h"
using namespace std;
int main()
{
Triangle tri1;
double x,y,z;
cout<<"输入三角形的三边:";
cin>>x>>y>>z;
tri1.setA(x);
tri1.setB(y);
tri1.setC(z);
if(tri1.isTriangle())
{
cout<<"三边为:"<<tri1.getA()<<'\t'<<tri1.getB()<<'\t'<<tri1.getC()<<endl;
cout<<"三角形周长为:"<<tri1.perimeter()<<'\t'<<"面积为:"<<tri1.area()<<endl;
}
else
cout<<"不能构成三角形。"<<endl;
return 0;
}
而运行结果如下:
我真是太机智了用了3 4 5这种经典的勾股定理三边长,这样就算是一眼也能看出来数据的对与错。嗯……是不是加个5 12 13 更好呢?
突然发现周长和面积在数据上是相等的呢!
虽然只用了一篇博客,但是我感觉这样子相当的精炼,而且测试数据的选择也很重要。
以上。