题目1553:时钟

 

时间限制:1 秒

内存限制:128 兆

特殊判题:

提交:1484

解决:572

题目描述:

如图,给定任意时刻,求时针和分针的夹角(劣弧所对应的角)。

输入:

输入包含多组测试数据,每组测试数据由一个按hh:mm表示的时刻组成。

输出:

对于每组测试数据,输出一个浮点数,代表时针和分针的夹角(劣弧对应的角),用角度表示,结果保留两位小数。

样例输入:
03:00
14:45
样例输出:
90.00
172.50

 

//JOBDU 1553 
  
#include<iostream> 
#include<stdio.h> 
#include<cmath>  
const float pPer = 30;//每五分钟或每一小时刻度是30度 
   
using namespace std; 
  
class Time 
{ 
    int hour; 
    int min; 
      
public: 
    Time(int x,int y):hour(x),min(y){}; 
      
    float calAngel(const Time& x); 
    inline void t24_12(Time& x)//12小时制  
    { 
        if(x.hour>12) 
            x.hour-=12; 
    } 
}; 
  
float Time::calAngel(const Time& x) 
{ 
    float hourAng = x.hour*pPer+(float)x.min/2;//时针与12时角  
    float minAng = x.min*6;//分针与12时角  
    float ans = minAng-hourAng; 
      
    while(ans>180 || ans<0)//劣角  
    { 
        if(ans>180) 
            ans = 360-ans;   
        if(ans<0) 
            ans += 360; 
    } 
    printf("%.2f\n",ans); 
    return ans; 
} 
  
int
main(void) 
{ 
    int h,m; 
    while(scanf("%d:%d",&h,&m)!=EOF) 
    { 
        Time t(h,m); 
        t.t24_12(t); 
        t.calAngel(t); 
    } 
    return 0; 
} 
/************************************************************** 
    Problem: 1553 
    User: ranchothu 
    Language: C++ 
    Result: Accepted 
    Time:0 ms 
    Memory:1520 kb 
****************************************************************/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值