当前位置: 首页 > 知识库问答 >
问题:

为什么我的cs50valid_triangle程序不起作用?

刘瑞
2023-03-14

我对这段代码有一个问题,因为我似乎找不到问题所在?这是我试图解决的问题:-声明并编写一个名为valid_triangle的函数,它将表示三角形三边长度的三个实数作为参数,并根据这三个长度是否能够构成三角形输出真或假。

  • 关于三角形的以下规则:
    • 三角形只能有正长度的边
    • 三角形任意两条边的长度之和必须大于第三条边的长度
    //includes
    #include <stdio.h>
    #include <cs50.h>
    
    bool valid_triangle(float x, float y, float z);
    
    int main (void)
    {
       float x = get_float("x:");
       float y = get_float("y:");
       float z = get_float("z:");
       bool w = valid_triangle(x,  y,  z);
    }
    
    bool valid_triangle(float x, float y, float z)
    {
        // only positive sides
        if (x <= 0 || y <= 0 || z <= 0)
        {
            return false;
            printf("false\n");
        }
    
        // sum of the lengths of any two sides of the triangle must be greater than the length of the third side.
        else if (x + y < z || x + z < y || y + z < x)
        {
            return false;
            printf("false\n");
        }
        else
        {
            return true;
            printf("True\n");
        }
    
        return 0;
    }
    

共有2个答案

司寇飞航
2023-03-14

//这段代码应该可以作为valid_triangle程序的解决方案

#include <cs50.h>
#include <stdio.h>

//首先声明末尾带有分号的函数

bool valid_triangle(float x, float y, float z);

int main(void)
{
 // Ask users for inputs
 float a = get_float("Give me the first integer to form a triangle:  ");
 float b = get_float("Give me the second integer to form a triangle:  ");
 float c = get_float("Give me the third integer to form a triangle:  ");


// function call
bool result=valid_triangle(a, b, c);

//set condition for your boolean variable 'result'
 if (result == true)
 {
  printf("True \n");
 }
else
 {
 printf("False \n");
 }

}


//function definition, without any semi-colon at the end

bool valid_triangle(float x, float y, float z)
{
//checking if any of the sides is negative or equal to zero
if (x<=0 || y<=0 || z<=0)
{
    return false;
}

// sum of the lengths of any two sides of the triangle must be greater than the length 
//of the third side.

else if ((x+y<=z) || (x+z<=y) || (z+y<=x))
{
    return false;
 }
 return true;
}
公西俊才
2023-03-14

首先,这个if语句

else if (x + y < z || x + z < y || y + z < x)

是不正确的,它应该看起来像

else if (x + y <= z || x + z <= y || y + z <= x)

和返回语句后的语句,如下面的代码段所示

    return false;
    printf("false\n");

没有效果。看来你是说

    printf("false\n");
    return false;

尽管printf的调用不应该在函数内部。

您只能在main中调用一个printf,如

bool w = valid_triangle(x,  y,  z);
printf( "%s\n", w == false ? "False" : "True" );

也是函数中的最后一个return语句

return 0;

是多余的。

这是一个演示程序。

#include <stdio.h>
#include <stdbool.h>

bool valid_triangle(float x, float y, float z)
{
    // only positive sides
    if (x <= 0 || y <= 0 || z <= 0)
    {
        return false;
    }
    // sum of the lengths of any two sides of the triangle must be greater 
    // than the length of the third side.
    else if ( x + y <= z || x + z <= y || y + z <= x)
    {
        return false;
    }
    else
    {
        return true;
    }
}

int main(void) 
{
    float a = 4.0f, b = 5.0f, c = 6.0f;
    printf( "%.1f, %.1f, %.1f are sides of a triangle - %s\n", a, b, c,
            valid_triangle( a, b, c ) ? "true" : "false" );
            
    return 0;
}

程序输出是

4.0, 5.0, 6.0 are sides of a triangle - true
 类似资料:
  • Stage.close()对我不起作用。 我查看了:JavaFX2.0:关闭一个舞台(窗口) 这是我的代码: 下面是调用消息框类的代码:

  • 问题内容: 当我使用jdk 7运行Json测试程序时,它说: 我在项目中包含了“ javax.json-api-1.0.jar”。 这是一个简单的程序,没有使用galssfish,为什么在这里提到玻璃鱼? 问题答案: 仅包含用于编译时依赖的API。但是,如果要运行您的应用程序,则需要一个类。 是您需要的同时包含+ 类的jar 。 有关更多详细信息,请参见此线程。

  • 我正在尝试检测我的两个精灵何时发生碰撞。我做的第一件事是在我的播放器周围创建一个矩形(称为player.img),然后在我想检测的树周围创建另一个矩形(称为背景.treesrect)。我将玩家矩形的坐标设置为等于当用户按下键移动时更新的坐标,但玩家矩形不移动。然后我使用精灵.碰撞(精灵)函数来检测它们是否碰撞并且没有检测到。有人可以向我展示为什么我的播放器矩形没有更新以及其他任何可能错误的内容吗?

  • 问题内容: 我在这里有点困惑。如果我将变量传递给json_decode,它将不起作用: 第一个回显正确显示了我传递的JSON字符串,例如 第二个回显显示NULL。因此,我从第一个回显中获取了字符串,并编写了以下代码: 你怎么说,它向我展示了正确解码的数组。字符串绝对相同,我什至保留转义字符。也许是问题所在? 问题答案: 看起来您的服务器已启用。无论是将其禁用或运行通过使用它之前。

  • 还不起作用。所以我放弃链接,我只是编码: