[C++]从文件中读取数据并计算三角形面积

声明:题目来自某211陈年题库,新手写文,大佬请多指教

题目描述

根据三角形的三条边a,b,c,计算三角形的面积,三角形三条边满足条件:任意两边之和大于第三边,并且任意两边之差小于第三边。

从in.txt读取三角形的三条边,计算输出其面积到out.txt,如果不是三角形的三条边则输出-1。三角形面积S=√[p(p-a)(p-b)(p-c)],其中p为半周长,p=(a+b+c)/2。

三条边的长度为float,面积为float。

如:in.txt

3 4 5

34 54 56

5 67 7

89 78 97

9 8 26

则:out.txt

6

887.676

-1

3275.31

-1

核心思路:1.文件流读取数据 2.利用三角形三边关系判断数据 3.如数据符合关系,则计算出三角形面积;否则返回-1表示数据错误;4.文件流输出面积

思路中的2-3步通过定义一个函数实现:

float fun(float a,float b,float c)//求a,b,c三条边组成三角形面积
{
	if(a+b>c&&b+c>a&&a+c>b)//判读三边关系
    {
		float p=(a+b+c)/2;
		return sqrt(p*(p-a)*(p-b)*(p-c));/*利用海伦公式求解,
                                          sqrt是cmath的成员函数
                                          用于求解算数平方根,也可以用pow()函数代替*/
	}
	else
		return -1;//不符合,返回-1,表示计算未进行
}

再加上文件流部分;

全部代码
#include <fstream>
#include <cmath>
using namespace std;
float fun(float a,float b,float c)//求a, b,c三条边组成三角形面积
{
	if(a+b>c&&b+c>a&&a+c>b){
		float p=(a+b+c)/2;
		return sqrt(p*(p-a)*(p-b)*(p-c));
	}
	else
		return -1;
}

int main()
{
	ifstream inf("in.txt");
	ofstream outf("out.txt");
	int a,b,c;
	while(inf>>a>>b>>c)//判断数据是否读到末尾;若无数据,则判断为False;读取结束
	    outf<<fun(a,b,c)<<endl;
	
	return 0;	
}

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值