递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
12
返回列表 发新帖
楼主: urenai
打印 上一主题 下一主题

[视窗] 寻找一个算法

[复制链接]

18

主题

337

帖子

2919

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2919
11#
发表于 2024-2-18 09:16:18 | 只看该作者

<火山程序 类型 = "通常" 版本 = 1 />

方法 取差值 <公开>
参数 v1 <类型 = 整数>
参数 v2 <类型 = 整数>
{
    返回 (取较小值 (取整数绝对值 (v1 - v2), 12 - 取整数绝对值 (v1 - v2)))

}
回复

使用道具 举报

2

主题

123

帖子

2158

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2158
12#
发表于 2024-2-18 10:29:11 | 只看该作者
b0y 发表于 2024-2-17 20:06
可以根据2个点和圆心的夹角是否小于180

这个方法是正确的
回复

使用道具 举报

36

主题

193

帖子

1187

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1187
QQ
13#
发表于 2024-2-18 11:29:17 | 只看该作者
感觉想复杂了啊
不需要算法,直接用目标减当前点
结果为正,就正行,为负,就逆行
回复

使用道具 举报

346

主题

1600

帖子

6535

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6535
QQ
14#
 楼主| 发表于 2024-2-18 12:51:49 | 只看该作者
urenai 发表于 2024-2-18 01:40
我滴个天,我捣鼓出来了才发现有兄弟给弄了。

    @ while (@<v1> < 0) {@<v1> += 12;}
    @ while (@<v1> > 11){@<v1> -= 12;}
    @ while (@<v2> < 0) {@<v2> += 12;}
    @ while (@<v2> > 11){@<v2> -= 12;}
    @ int v3 = min(abs(@<v1> - @<v2>), 12 - abs(@<v1> - @<v2>));
    @ return @<v1> <= @<v2> ? v3 : -v3;
前面4行意思是,你输入大于或小于区间值,更正一次。
例如你输入的值是 v1=13  ,实际输出 v1=1,这样保证结果绝对正确。
第5句就是取出最小值,但是这个最小值是  正数   肯定不为负。
依赖第6句,是否返回负
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

18

主题

337

帖子

2919

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2919
15#
发表于 2024-2-18 14:03:46 | 只看该作者
urenai 发表于 2024-2-18 12:51
@ while (@ < 0) {@ += 12;}
    @ while (@ > 11){@ -= 12;}
    @ while (@ < 0) {@ += 12;}


用火山直接写比较简单
回复

使用道具 举报

44

主题

233

帖子

914

积分

高级会员

Rank: 4

积分
914
16#
发表于 2024-2-19 16:38:01 | 只看该作者
你们都是玩C++的吗,咋都那么牛。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-23 21:19 , Processed in 0.098096 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表