#include <iostream>
#include<cmath>
#include<stdlib.h>
using namespace std;
class point
{
public:
float x1, x2, y1, y2, z1, z2;
point(float x1, float x2, float y1, float y2, float z1, float z2)
:x1(x1), x2(x2), y1(y1), y2(y2), z1(z1), z2(z2) {}
float a() { return (x1 - y1) * (x1 - y1) + (x2 - y2) * (x2 - y2); }
float b() { return (x1 - z1) * (x1 - z1) + (x2 - z2) * (x2 - z2); }
float c() { return (y1 - z1) * (y1 - z1) + (y2 - z2) * (y2 - z2); }
};
class line :public point
{
public:
line(float x1, float x2, float y1, float y2, float z1, float z2)
:point(x1, x2, y1, y2, z1, z2) {}
float len1() { return sqrt(a()); }
float len2() { return sqrt(b()); }
float len3() { return sqrt(c()); }
};
class triangle :public line
{
private:
float a = len1(), b = len2(), c = len3();
public:
//triangle() :line(0,0,0,0,0,0){}
triangle(float x1, float x2, float y1, float y2, float z1, float z2)
:line(x1, x2, y1, y2, z1, z2) {}
bool triangle_condition();
void triangle_judge();
void triangle_area();
void output_();
};
void menu_show() {
cout << "***************************************" << endl << endl
<< "*** 三角形的种类和面积-功能菜单 ***" << endl << endl
<< "* 1.输入坐标 *" << endl << endl
<< "* 2.判断三角形种类 *" << endl << endl
<< "* 3.根据构成的三角形计算三角形面积 * " << endl << endl
<< "* 3.根据构成的三角形计算三角形面积 * " << endl << endl
<< "* 3.根据构成的三角形计算三角形面积 *" << endl << endl
<< "* 4.输出结果 *" << endl << endl
<< "* 5.退出运行 *" << endl << endl
<< "***************************************" << endl << endl;
}
bool triangle::triangle_condition()//三角形构成条件
{
if (a + b > c&& a + c > b&& b + c > a)
return 1;
else
return 0;
}
void triangle::triangle_judge() {
if (triangle_condition())
{
if (a * a + b * b == c * c) {
cout << endl << "直角三角形" << endl;
}
else if (a * a + b * b > c* c) {
cout << endl << "锐角三角形" << endl;
}
else if (a * a + b * b < c * c) {
cout << endl << "钝角三角形" << endl;
}
}
else
cout << "不能构成三角形,请重新输入" << endl;
}
void triangle::triangle_area() {//海伦公式求面积,适用所有三角形
float s, area;
if (triangle_condition())
{
s = (a + b + c) / 2;
area = sqrt(s * (s - a) * (s - c) * (s - b));
cout << "三角形面积=" << area << endl << endl;
}
else cout << "三角形面积不可求!" << endl << endl;
}
void triangle::output_() {
cout << "(" << x1 << "," << x2 << ")" << endl
<< "(" << y1 << "," << y2 << ")" << endl
<< "(" << z1 << "," << z2 << ")" << endl;
triangle_judge();
triangle_area();
}
void menu() {
cout << "|-------------------------------------|" << endl << "|" << endl
<< "| 三角形的种类和面积-功能菜单 |" << endl << "|" << endl
<< "| 1.输入坐标 |" << endl << "|" << endl
<< "| 2.判断三角形种类 |" << endl << "|" << endl
<< "| 3.根据构成的三角形计算三角形面积 |" << endl << "|" << endl
<< "| 4.输出结果 |" << endl << "|" << endl
<< "| 5.退出运行 |" << endl << "|" << endl
<< "|-------------------------------------|" << endl << endl;
}
/*
1)设计菜单实现功能选择
2)输入三角形的三个顶点坐标
3)判断三角形种类(锐角三角形、钝角三角形、直角三角形、或者不能构成三角形)
4)根据构成的三角形计算三角形面积
5)输出结果(包括:三个点的坐标、哪种三角形、三角形的面积值)*/
int main()
{
int menu;
float x1, x2, y1, y2, z1, z2;
while (1)
{
menu_show();
cout << "请选择菜单<1-5>:";
cin >> menu;
switch (menu)
{
case 1: {
cout << "输入三角形的三个顶点坐标:(x1, x2),(y1, y2), (z1, z2)" << endl;
cin >> x1 >> x2 >> y1 >> y2 >> z1 >> z2;
system("pause"); system("cls"); break; }
case 2: {
triangle a(x1, x2, y1, y2, z1, z2);
a.triangle_judge();
system("pause"); system("cls"); break; }
case 3: {
triangle a(x1, x2, y1, y2, z1, z2);
a.triangle_area();
system("pause"); system("cls"); break; }
case 4:
{triangle a(x1, x2, y1, y2, z1, z2);
a.output_();
system("pause"); system("cls"); break; }
case 5:system("pause"); exit(0);
default:cout << "请重新输入选择!\n"; system("pause"); system("cls"); break;
}
}
}
组合!!!!!!!(同学提醒的,呜呜~~~~~~~~)
#include <iostream>
#include<cmath>
#include<cstdlib>
using namespace std;
class point
{
private: double x, y;
public:
point() :x(0), y(0) {}
point(double x, double y) :x(x), y(y) {}
double getX() { return x; }
double getY() { return y; }
void printpoint()
{
cout << "Point:(" << x << "," << y << ")" << endl; //输出点
}
};
class line :public point
{
private:
point end_point1, end_point2;
public:
line(point end_point1, point end_point2):end_point1(end_point1), end_point2(end_point2) {}
double Length()
{
double dx = end_point1.getX() - end_point2.getX();
double dy = end_point1.getY() - end_point2.getY();
return sqrt(dx * dx + dy * dy);
}
void printline()
{
cout << " The Length of Line: " << Length() << endl;
}
};
class triangle
{
private:
line a, b, c;
double max(double p, double q) { return p > q ? p : q; }
double min(double p, double q) { return p < q ? p : q; }
double maxside, minside, midside;
public:
triangle(line a, line b, line c) :a(a), b(b), c(c) {};
bool triangle_condition();
void triangle_length_compare();
void triangle_judge();
void triangle_area();
void printtriangle();
};
bool triangle::triangle_condition()//三角形构成条件
{
if (a.Length() + b.Length() > c.Length() && a.Length() + c.Length() > b.Length() && b.Length() + c.Length() > a.Length())
return 1;
else
return 0;
}
void triangle::triangle_length_compare()
{
maxside = max(a.Length(), max(b.Length(), c.Length()));
minside = min(a.Length(), min(b.Length(), c.Length()));
midside = a.Length() + b.Length() + c.Length() - maxside - minside;
}
void triangle::triangle_judge() {//判断三角形类型
if (triangle_condition())
{
double error = fabs(maxside * maxside - minside * minside - midside * midside);
cout << "误差(error)=" << error;
if (maxside * maxside + error == minside * minside + midside * midside)
cout << endl << "直角三角形" << endl;
else if (maxside * maxside < minside * minside + midside * midside)
cout << endl << "锐角三角形" << endl;
else if (maxside * maxside > minside* minside + midside * midside)
cout << endl << "钝角三角形" << endl;
}
else
cout << "不能构成三角形,请重新输入" << endl;
}
void triangle::triangle_area() {//海伦公式求面积,适用所有三角形
double s, area;
if (triangle_condition())
{
s = (a.Length() + b.Length() + c.Length()) / 2;
area = sqrt(s * (s - a.Length()) * (s - c.Length()) * (s - b.Length()));
cout << "三角形面积=" << area << endl << endl;
}
else cout << "三角形面积不可求!" << endl << endl;
}
void triangle::printtriangle()
{
triangle_judge();
triangle_area();
}
void menu() {
cout << "|-------------------------------------|" << endl << "|" << endl
<< "| 三角形的种类和面积-功能菜单 |" << endl << "|" << endl
<< "| 1.输入坐标 |" << endl << "|" << endl
<< "| 2.判断三角形种类 |" << endl << "|" << endl
<< "| 3.根据构成的三角形计算三角形面积 |" << endl << "|" << endl
<< "| 4.输出结果 |" << endl << "|" << endl
<< "| 5.退出运行 |" << endl << "|" << endl
<< "|-------------------------------------|" << endl << endl;
}
int main()
{
int select;
int mark = 0;
double x1, y1, x2, y2, x3, y3;
while (1)
{
menu();
cout << "请选择菜单<1-5>:";
cin >> select;
switch (select)
{
case 1: {
cout << "输入三角形的三个顶点坐标:(x1, x2),(y1, y2), (z1, z2)" << endl;
cout << "请输入第一个点的坐标:";
cin >> x1 >> y1;
cout << "请输入第二个点的坐标:";
cin >> x2 >> y2;
cout << "请输入第三个点的坐标:";
cin >> x3 >> y3;
point a(x1, y1), b(x2, y2), c(x3, y3);
line s1(a, b), s2(a, c), s3(b, c);
mark = 1;
system("pause"); system("cls"); break; }
case 2: {
if (mark)
{
point a(x1, y1), b(x2, y2), c(x3, y3);
line s1(a, b), s2(a, c), s3(b, c);
a.printpoint();
b.printpoint();
c.printpoint();
s1.printline();
s2.printline();
s3.printline();
triangle ss(s1, s2, s3);
ss.triangle_judge();
system("pause"); system("cls"); break;
}
else
cout << "未输入坐标,请重新输入!!" << endl; system("pause"); system("cls"); break;
}
case 3: {
if (mark)
{
point a(x1, y1), b(x2, y2), c(x3, y3);
line s1(a, b), s2(a, c), s3(b, c);
triangle ss(s1, s2, s3);
ss.triangle_area();
system("pause"); system("cls"); break;
}
else
cout << "未输入坐标,请重新输入!!" << endl; system("pause"); system("cls"); break;
}
case 4:
{
if (mark)
{
point a(x1, y1), b(x2, y2), c(x3, y3);
line s1(a, b), s2(a, c), s3(b, c);
triangle ss(s1, s2, s3);
a.printpoint();
b.printpoint();
c.printpoint();
ss.printtriangle();
system("pause"); system("cls"); break;
}
else
cout << "未输入坐标,请重新输入!!" << endl; system("pause"); system("cls"); break;
}
case 5: cout << "欢迎下次使用!" << endl; exit(0);
default:cout << "请重新输入选择!\n"; system("pause"); system("pause"); system("cls"); break;
}
}
}