wind414 2023-01-01 12:36 采纳率: 80.4%
浏览 20
已结题

为什么程序运行的结果不对没有输出数字,反而输出了字母

img

如图,希望输出三角形面积的面积,若不是三角形则输出-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条)

报告相同问题?

问题事件

  • 系统已结题 1月10日
  • 已采纳回答 1月2日
  • 修改了问题 1月1日
  • 创建了问题 1月1日

悬赏问题

  • ¥15 表达式必须是可修改的左值
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题