如图,希望输出三角形面积的面积,若不是三角形则输出-1,但是运行结果是奇怪的字母,程序哪里出错了?
2条回答 默认 最新
- |__WhoAmI__| 2023-01-01 13:13关注
当输入的三边不构成三角形时,程序会输出 -1。但是程序还有一个潜在的 bug:如果输入的三边构成的三角形的面积是无限大的,那么程序就会输出 nan。
在这种情况下,程序会运行一个无限循环,每次都读入三边的值,计算三角形的面积,并将其输出。这样就会看到一连串的 nan,而不是期望的三角形的面积。
解决方法是在输入完三边之后,再检查一下三边是否构成三角形。如果不是,就不计算三角形的面积,直接输出 -1。
正确的代码应该是这样的:
#include <fstream> #include <cmath> using namespace std; bool is_triangle(float a, float b, float c) { return a + b > c && a + c > b && b + c > a && b - c < a && a - c < b && a - b < c; } int main() { ifstream inf("in.txt", ios::in); ofstream outf("out.txt", ios::out); float a, b, c, p; float s; while (!inf.eof()) { inf >> a >> b >> c; if (is_triangle(a, b, c)) { p = (a + b + c) / 2; s = sqrt((p * (p - a) * (p - b) * (p - c))); outf << s << '\n'; } else { outf << "-1" << '\n'; } } inf.close(); outf.close(); return 0; }
仅供参考,望采纳,谢谢。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 表达式必须是可修改的左值
- ¥15 如何绘制动力学系统的相图
- ¥15 对接wps接口实现获取元数据
- ¥20 给自己本科IT专业毕业的妹m找个实习工作
- ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
- ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
- ¥50 mac mini外接显示器 画质字体模糊
- ¥15 TLS1.2协议通信解密
- ¥40 图书信息管理系统程序编写
- ¥20 Qcustomplot缩小曲线形状问题