如何确定时钟的秒针是否位于较大区域或较小区域[关闭]

2024-01-15

我得到的时间格式如下:hh:mm:ss

我必须找出在给定的时间内,秒针是否位于时针和分针形成的较大或较小的区域中?

我知道时针每分钟移动0.5度, 分针每分钟转动 6 度,秒针每分钟转动 360 度。

但我无法找出秒针位于哪个区域。那么我该怎么做呢?

Second hand within angle between hour and minute hands:
10:15:00
04:40:30

Second hand in reflex angle:
12:01:30

这个问题引起了我的兴趣,所以我继续编写了一个测试项目C#。据我所知它有效,但你必须对其进行测试才能确定。

这是代码:

string strTime = "10:15:00";

DateTime dt = DateTime.ParseExact(strTime, "HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);

int nHourDegrees = (360 / 12) * dt.Hour;
int nMinuteDegrees = (360 / 60) * dt.Minute;
int nSecondDegrees = (360 / 60) * dt.Second;

if (nHourDegrees > nMinuteDegrees)
{
    int nArea1 = nHourDegrees - nMinuteDegrees;
    int nArea2 = 360 - nArea1;

    bool bArea1IsBigger = (nArea1 >= nArea2);
    if (nSecondDegrees <= nHourDegrees && nSecondDegrees >= nMinuteDegrees)
    {
        //Second hand lies in area1
        if (bArea1IsBigger)
        {
            Console.WriteLine("Second hand is in the larger area");
        }
        else
        {
            Console.WriteLine("Second hand is in the smaller area");
        }
    }
    else
    {
        if (bArea1IsBigger)
        {
            Console.WriteLine("Second hand is in the smaller area");
        }
        else
        {
            Console.WriteLine("Second hand is in the larger area");
        }
    }
}
else if (nMinuteDegrees > nHourDegrees)
{
    int nArea1 = nMinuteDegrees - nHourDegrees;
    int nArea2 = 360 - nArea1;

    bool bArea1IsBigger = (nArea1 >= nArea2);
    if (nSecondDegrees <= nMinuteDegrees && nSecondDegrees >= nHourDegrees)
    {
        //Second hand lies in area1
        if (bArea1IsBigger)
        {
            Console.WriteLine("Second hand is in the larger area");
        }
        else
        {
            Console.WriteLine("Second hand is in the smaller area");
        }
    }
    else
    {
        if (bArea1IsBigger)
        {
            Console.WriteLine("Second hand is in the smaller area");
        }
        else
        {
            Console.WriteLine("Second hand is in the larger area");
        }
    }
}
else
{
    if (nSecondDegrees == nHourDegrees)
    {
        Console.WriteLine("Second hand is on both of the other hands");
    }
    else
    {
        Console.WriteLine("Second hand is in the ONLY area");
    }
}

我们的想法是找到时针和分针之间的区域。然后检查秒针是否在该区域内。我们还将这个区域与另一个区域进行比较,然后我们可以轻松推断出秒针是在两者中较小还是较大的区域。

Note:可以对代码进行一些改进:

  1. 它可以显着缩短 - 我没有这样做,因为它主要是如何完成此操作的测试/证明
  2. 如果超出时间(即 24 小时制而非 12 小时制),则必须进行更改。即负12
  3. 如果时间转到 12/60/60 并且没有回到 0,则必须手动完成
  4. 可以添加常量以消除对幻数的需要
  5. 与上面类似,但常见的计算如360 / 12可以移至常量
  6. 它可以分解为单独的方法以提高可读性
  7. 可以转移到辅助方法中,即bool IsInLargerArea(string timeString)
  8. 需要添加区域大小相同的情况,目前我只是假设Area1如果它们相等则更大,即>=(大于或等于)
  9. 添加检查以确保只有 3 个部分straTimes array
  10. 可能还有一些我没有想到的事情
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何确定时钟的秒针是否位于较大区域或较小区域[关闭] 的相关文章

  • 更合适地说插入未排序动态数组的摊销 O(1) 与 O(n) ?

    这属于 stackoverflow com help on topic 中的 软件算法 在本例中 是一种将项目添加到动态未排序数组的软件算法 This is chart we made in class about the runtimes
  • 神经网络的层和神经元

    我想更多地了解神经网络 我正在开发一个 C 程序来制作神经网络 但我坚持使用反向传播算法 很抱歉没有提供一些工作代码 我知道有很多库可以用多种语言创建神经网络 但我更喜欢自己制作一个 关键是我不知道要实现特定目标 例如模式识别或函数近似或其
  • 序列和与 GCD

    大约一个月前 我在编程挑战中遇到了这个问题 但社论尚未发布 所以我在这里问 有一个大小为 N 的数组 A 求 A 的 K 个长度子序列的总和 GCD Example 如果 A 1 2 3 且 K 2 1 2 3 总和 1 GCD 3 1 3
  • 如何在 JavaScript 中构建树模式匹配算法?

    好吧 这是一个有点复杂的问题 但是 tl dr 基本上是如何使用 模式树 解析 实际树 如何检查特定的树实例是否与特定的模式树匹配 首先 我们有我们的结构模式树 模式树通常可以包含以下类型的节点 sequence节点 匹配一系列项目 零个或
  • 从原点开始在离散 2D 网格上迭代向外螺旋的算法

    例如 这是预期螺旋的形状 以及迭代的每个步骤 y 16 15 14 13 12 17 4 3 2 11 18 5 0 1 10 x 19 6 7 8 9 20 21 22 23 24 其中线条是 x 轴和 y 轴 以下是算法每次迭代 返回
  • 如何为多边形创建内部螺旋?

    对于任何形状 我如何在其内部创建类似形状的螺旋 这与边界 使用 Minkowski 和 类似 尽管它会是相同形状的螺旋 而不是在形状内部创建相同的形状 我找到了这个 http www cis upenn edu cis110 13su le
  • 什么是“朴素”算法,什么是“封闭式”解决方案?

    我有一些关于描述算法时使用的术语语义的问题 首先 朴素 算法是什么意思 这与给定问题的其他解决方案有何不同 解决方案还可以采取哪些其他形式 其次 我听到很多人提到 封闭式 解决方案 我也不知道这意味着什么 但在尝试解决递归关系时经常会出现
  • LRU算法,实现这个算法需要多少位?

    我有一个关于 LRU 算法的小问题 如果您有一个包含四个块的高速缓存 那么需要多少位来实现该算法 假设您指的是 4 路组关联缓存 完美 LRU 本质上是按照使用顺序为每一行分配一个精确的索引 您也可以将其视为 年龄 因此 4 个元素中的每一
  • 我应该对算法使用递归还是记忆化?

    如果我可以选择使用递归或记忆来解决问题 我应该使用哪一个 换句话说 如果它们都是可行的解决方案 因为它们提供了正确的输出并且可以在我正在使用的代码中合理地表达 那么我什么时候会使用其中一个而不是另一个 它们并不相互排斥 您可以同时使用它们
  • 优化计算中使用的 # 个线程的算法

    我正在执行一个操作 我们将其称为CalculateSomeData CalculateSomeData 在连续的 代 中运行 编号为 1 x 整个运行中的代数由CalculateSomeData 的输入参数固定 并且是先验已知的 完成一次生
  • 为什么 Dijkstra 算法使用减密钥?

    Dijkstra 教给我的算法如下 while pqueue is not empty distance node pqueue delete min if node has been visited continue else mark
  • 排序矩阵的选择算法

    这是谷歌面试问题 给定一个 N N 矩阵 所有行均已排序 所有列均已排序 找到矩阵的第 K 个最大元素 在 n 2 中执行它很简单 我们可以使用堆或合并排序 n lg n 对它进行排序 然后得到它 但是有没有更好的方法 比 n lg n 更
  • 计算序列而无法存储值?

    问题陈述 here http www spoj com problems EC SER 令 S 为无限整数序列 S0 a S1 b Si Si 2 Si 1 对于所有 i gt 2 你有两个整数 a 和 b 您必须回答有关序列中第 n 个元
  • 查找字符串中最常见的子字符串的算法

    是否有任何算法可用于查找字符串中最常见的短语 或子字符串 例如 以下字符串将 hello world 作为其最常见的两个单词短语 hello world this is hello world hello world repeats thr
  • Z 算法背后的直觉

    Z算法是一种复杂度为O n 的字符串匹配算法 一种用例是从字符串 B 中查找字符串 A 的最长出现次数 例如 overdose from stackoverflow 将会 over 您可以通过使用组合字符串调用 Z 算法来发现这一点 ove
  • 对 Java 中 *any* 类的所有实例进行全排序

    我不确定以下代码是否能确保 Comparator 的 Javadoc 中给出的所有条件 class TotalOrder
  • 用于在链表中查找结点的生产代码

    我在一次采访中被问到这个问题 我被要求编写代码 用于在 O 1 空间和线性时间的生产环境中在链表 其形式为 Y 形式 双臂不一定相等 中查找结点 我想出了这个解决方案 我以前在某处见过 1 Measure lengths of both l
  • 寻找公共子集的算法

    I have N number of sets Si of Numbers each of a different size Let m1 m2 mn be the sizes of respective sets mi Si and M
  • 有向未加权图中的最长非循环路径

    什么算法可用于找到未加权有向无环图中的最长路径 动态规划 http en wikipedia org wiki Dynamic programming 它也被引用于最长路径问题 http en wikipedia org wiki Long
  • 确定一组日期的事件重复模式

    我正在寻找一种模式 算法或库 它将采用一组日期并在退出时返回重复的描述 即集合 11 01 2010 11 08 2010 11 15 2010 11 22 2010 11 29 2010 会产生类似 十一月的每个星期一 的结果 有没有人以

随机推荐

  • 如何在 Azure 应用服务中插入具有 1:n 关系的实体

    我需要使用 Azure 应用服务建立 1 n 关系 我按照这个教程 http shellmonger com 2016 05 27 30 days of zumo v2 azure mobile apps day 26 relationsh
  • 使用压缩生成的损坏的 docx

    首先我要说的是 我在这里创建了一个帐户 因为为了尝试解决这个问题 我一直在用头撞墙 所以就这样吧 另外 我已经看到这个问题了here https stackoverflow com questions 13566468 how to com
  • 在 Android 中的自定义视图上添加按钮

    我有以下课程 public class GameActivity extends Activity Override public void onCreate Bundle savedInstanceState super onCreate
  • Android 本机库链接到 aar 中的另一个本机库

    我有一个好奇的问题 我有一个 aar 库 其中包含并使用本机 so 库 现在 我想编写另一个库 它依赖于该库 并且还具有依赖于第一个库中的本机库的本机部分 依赖库同时使用第一个库中的本机代码和 java 包装器 我想知道 有什么办法 如何通
  • JSP编程-response.getWriter().flush();不起作用

    预期结果 浏览器中显示 Hello World 10秒后 幸福再见 被展示 发生了什么 页面加载了 10 秒钟 然后最后显示 Hello World Goodbye Happiness 我想要做的是显示长时间运行的操作在达到不同里程碑时的状
  • 根据使用 applescript 的内容和最佳实践,在终端中选择特定选项卡

    这是一个特定于应用程序的问题 我试图根据其中的内容在 Terminal app 中查找并选择一个选项卡 这是我正在做的事情 tell application Terminal set foundTabs to every tab of ev
  • Swing 组件的单元测试

    我正在编写一个类似 Total Commander 的应用程序 我有一个单独的文件列表组件及其模型 模型支持侦听器并发出事件通知 例如CurrentDirChanged等方式如下 private void fireCurrentDirect
  • “stat_smooth()”计算失败:找不到对象“C_crspl”

    我正在尝试添加一个geom smooth to a qplot 使用以下代码 library ggplot2 library ggplot2movies qplot votes rating data movies geom smooth
  • 在 Android Room 库中使用 Singleton

    我总是被告知使用 Singleton 很糟糕 然而 Android Room 实现的每个示例似乎都使用 Singleton 方法 有人可以解释一下为什么会这样吗 Thanks 有两种方法 1 你应该使用匕首2 2 抽象 RoomDataba
  • 我该如何修复这个正则表达式?

    前言 这个问题是以下问题的衍生问题 这个问题 https stackoverflow com q 59761275 109941 这是我的代码 https repl it repls AvariciousMindlessEllipse us
  • 在小程序中显示图像并播放音频片段

    我想在小程序中显示图像并播放音频剪辑 我编写了以下代码 但它不起作用 我只为图像编写了代码 但对音频剪辑一无所知 请让我知道我在哪里犯了错误 import java applet import java awt import java ne
  • 在ES6类中使用EventEmitter

    我正在尝试让我自己的类中的 EventEmitter 在 ES6 中运行 use strict const EventEmitter require events class Client extends EventEmitter cons
  • 如何在 SwiftUI 中使列表反转

    我是 SwiftUI 的新手 正在尝试制作类似的东西reverse在安卓中LinearLayoutManager messagesRecyclerView view findViewById R id messagesRecyclerVie
  • 如何确定 QTextDocument 的高度?

    给定一个特定的宽度 我想找出一个的高度QTextDocument 换句话说 如果QTextEdit其中包含QTextDocument is w宽 最小高度是多少h为了完全显示文档而不需要滚动条 将 QTextDocument 对象的宽度设置
  • log4net - 想要为每个Web应用程序用户创建一个日志文件[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们在 Asp Net Web 应用程序中使用 log4net 替换 nLog nLog 有一个有用的功能 允许我们为每个用户创建一个
  • 定位上下文菜单

    我正在尝试使用 jQuery 定位自定义上下文菜单 第一次它出现在正确的位置 鼠标坐标 但随后当前位置与新位置相加 以便菜单从屏幕上消失 这是 JavaScript
  • Div 100% 高度,内嵌显示

    我需要有 2 列divs 右栏将有一个随机内容 可能有 1 行或 100 行 我想在没有 JavaScript 的情况下跟随右列的高度 我正在尝试这个 div div style display inline block width 30
  • 为 python 2.7 安装 scipy

    我似乎无法让 SciPy 在 32 位 Windows XP 平台上为 Python 2 7 工作 我宁愿不构建自己的副本 有谁知道我在哪里可以找到它的安装程序 我试过这个site http www lfd uci edu gohlke p
  • 方括号在 SQL 查询中有效吗?

    我正在看某人写给我的一张便条 它看起来像这样 SELECT Something FROM Foobar WHERE blah blah pulls this too SELECT Something FROM Foobar WHERE so
  • 如何确定时钟的秒针是否位于较大区域或较小区域[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我得到的时间格式如下 hh mm ss 我必须找出在给定的时间内 秒针是否位于时针和分针形成的较大或较小的区域中 我知道