c++//2.三角形的种类和面积//20191211

#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;
		}
	}
}


发布了38 篇原创文章 · 获赞 2 · 访问量 1190

猜你喜欢

转载自blog.csdn.net/weixin_44811068/article/details/103491447