小编Rap*_*phm的帖子

不使用平方根的两点之间的距离

是否可以在不使用 math.h 库的情况下计算两点之间的距离?我知道,使用 math.h 库,它必须是以下几行(欧几里德距离公式)中的一些内容:

int Distance(int x1, int y1, int x2, int y2)

    {
    int dx = x2 - x1;
    int dy = y2 - y1;
    return sqrt(dx*dx + dy*dy);
    }
Run Code Online (Sandbox Code Playgroud)

但是,有没有办法在不使用平方根(需要 math.h 库)的情况下做完全相同的事情?

编辑:每当我尝试以下代码时,它都会给我浮点异常(核心转储):

float sqrt(int x) {
        int i;
        float s;
        s=((x/2)+x/(x/2)) / 2; /*first guess*/
        for(i=1;i<=4;i++) { /*average of guesses*/
            s=(s+x/s)/2;
        }
        return s;
    }

float Distance(float x1, float y1, float x2, float y2) {
    float dx = x2 - x1;
    float dy = y2 …
Run Code Online (Sandbox Code Playgroud)

c distance points square-root

6
推荐指数
2
解决办法
1万
查看次数

使用元组列表

我一直试图解决这个问题,但我无法弄明白.所以,我有一个带有元组的列表,例如:

[("Mary", 10), ("John", 45), ("Bradley", 30), ("Mary", 15), ("John", 10)]
Run Code Online (Sandbox Code Playgroud)

我想得到的是一个带有元组的列表,如果名称相同,则应添加这些元组的数量,如果不是,那个元组也必须是最终列表的一部分,举例说明:

[("Mary",25), ("John", 55), ("Bradley", 30)]
Run Code Online (Sandbox Code Playgroud)

我不知道我是否真的很好地解释了自己,但我想你可能会理解这些例子.

我试过这个,但它不起作用:

test ((a,b):[]) = [(a,b)]
test ((a,b):(c,d):xs) | a == c = (a,b+d):test((a,b):xs)
                      | otherwise = (c,d):test((a,b):xs)
Run Code Online (Sandbox Code Playgroud)

haskell tuples

2
推荐指数
1
解决办法
5839
查看次数

标签 统计

c ×1

distance ×1

haskell ×1

points ×1

square-root ×1

tuples ×1