4-2 三角形类

本文介绍了一个用于计算三角形周长和面积的C++类的设计与实现过程。该类包含设置和获取边长的方法,并提供了判断是否构成三角形的功能。通过用户输入三边长度,程序能够验证这些边是否可以组成三角形,并输出相应的周长和面积。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
* 程序的版权和版本声明部分
* Copyright (c)2013, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称:4-1 三角形类.cpp                           
* 作    者:孙红蕾                            
* 完成日期: 2013 年 3 月 22 日
* 版本号: v1.0      
* 输入描述:无 
* 问题描述:设计求三角形周长,面积的类
* 程序输出:三角形周长,面积 
*/
#include<iostream>
#include<Cmath>
using namespace std;
class Triangle
{
public:
	//置三边的值,注意要能成三角形
	inline void setA(double x);
	inline void setB(double y);
	inline void setC(double z);
	//取三边的值
	inline double getA();
	inline double getB();
	inline double getC();
    bool isTriangle();
	double perimeter(void);//计算三角形的周长
	double area(void);//计算并返回三角形的面积
private:
	double a,b,c; //三边为私有成员数据
};
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()<<','<<tri1.getB()<<','<<tri1.getC()<<endl;
		cout<<"三角形的周长为:"<< tri1.perimeter()<<'\t'<<"面积为:"<< tri1.area()<<endl;
	}
	else
		cout<<"不能构成三角形"<<endl;
	system("pause");
	return 0;
}
//定义Triangle类中的各个成员函数
//置三边的值,注意要能成三角形
inline void Triangle::setA(double x) 
{
	a=x;
}   
inline void Triangle::setB(double y)
{
	b=y;
}
inline void Triangle::setC(double z)
{
	c=z;
}
bool Triangle::isTriangle()
{
	if (a+b>c && a+c>b && b+c>a)
		return true;
	else
		return false;
}
//取三边的值
inline double Triangle::getA()
{
	return a;
}
inline double Triangle::getB()
{
	return b;
}
inline double Triangle::getC()
{
	return c;
}
double Triangle::perimeter(void)    //计算三角形的周长
{
	double l;
	l=a+b+c;
	return l;
}
double Triangle::area(void)    //计算并返回三角形的面积
{
	double l=(a+b+c)/2;
	double s;
	s=sqrt(l*(l-a)*(l-b)*(l-c));
	return s;
}
运行图片:

### PTA 7-1 三角形编程题解 #### 题目描述 给定三个正整数,分别表示三条的长度,判断这三条能否构成一个三角形。如果能,则进一步判断该三角形是锐角三角形、直角三角形还是钝角三角形。 #### 解决方案 对于这个问题,可以按照以下逻辑来实现: 1. **输入处理** - 接收三个整数值作为三角形的长度。 2. **有效性验证** - 判断这三个值是否满足任意两之和大于第三的原则,这是形成有效三角形的前提条件[^1]。 3. **类型判定** - 如果上述条件成立,则继续计算并比较各平方后的大小关系以确定具体属于哪种类型三角形- 若最长的平方等于另外两短平方和,则为直角三角形- 若小于则为锐角三角形;反之则是钝角三角形4. **输出结果** 以下是具体的C++ 和 Python 实现方式: #### C++ 版本代码示例 ```cpp #include <iostream> using namespace std; int main(){ double a, b, c; cin >> a >> b >> c; // 对输入的数据进行排序以便后续操作更简单 if (a > b) swap(a, b); if (b > c) swap(b, c); if (a > b) swap(a, b); bool isTriangle = ((a + b) > c); if (!isTriangle){ cout << "Not triangle"; } else{ if(pow(c, 2) == pow(a, 2)+pow(b, 2)){ cout<<"Right Triangle"; } else if(pow(c, 2)<pow(a, 2)+pow(b, 2)){ cout<<"Acute Triangle"; } else { cout<<"Obtuse Triangle"; } } return 0; } ``` #### Python版本代码示例 ```python def classify_triangle(a, b, c): sides = sorted([float(x) for x in [a, b, c]]) a, b, c = sides can_form_triangle = (a + b) > c if not can_form_triangle: result = 'Not triangle' elif abs((c**2)-(a**2)+(b**2))<1e-6 : result = 'Right Triangle' elif (c**2) < (a**2)+(b**2): result = 'Acute Triangle' else: result = 'Obtuse Triangle' print(result) if __name__ == '__main__': a, b, c = map(float, input().strip().split()) classify_triangle(a, b, c) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值