如图,希望输出三角形面积的面积,若不是三角形则输出-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 企业资源规划ERP沙盘模拟
- ¥15 树莓派控制机械臂传输命令报错,显示摄像头不存在
- ¥15 前端echarts坐标轴问题
- ¥15 CMFCPropertyPage
- ¥15 ad5933的I2C
- ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
- ¥15 数学建模求思路及代码
- ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题
- ¥15 谁会P4语言啊,我想请教一下
- ¥15 这个怎么改成直流激励源给加热电阻提供5a电流呀