广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 12043 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
0951020223 手机
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x2 鲜花 x64
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[C/C++][精华] 万年历算星期的公式
求万年历算星期的公式...

<---看了这篇 ..

访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容



[ 此文章被codeboy在2005-06-05 13:02重新编辑 ]


献花 x0 回到顶端 [楼 主] From:台湾 | Posted:2005-02-05 14:15 |
codeboy 手机
个人文章 个人相簿 个人日记 个人地图
社区建设奖
小有名气
级别: 小有名气 该用户目前不上站
推文 x6 鲜花 x331
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

给你一个包装好的函式~c++版的~
最后的传回值 i 就是星期几~表情

ps.回传值为零..就是星期天~
复制程式
int Compute(int Year, int Month, int Day)
{
 int TempYear, TempMonth, i, j;

 if (Month >= 3)
    {
     TempMonth = Month - 2;
     TempYear = Year;
    }
 else
    {
     TempMonth = Month + 10;
     TempYear = Year - 1;
    }

 j = TempYear + (int)(TempYear / 4) - (int)(TempYear / 100) +
     (int)(TempYear / 400) + (int)(2.6 * TempMonth - 0.2) + Day;
 i = j - 7*(int)(j / 7);

 return (i);
}



[ 此文章被codeboy在2005-02-06 13:05重新编辑 ]

此文章被评分,最近评分记录
财富:20 (by panasonic732)



连结有问题请来信,我会尽快修正~^^
通报时请附上是"哪一篇失效"...这样我才能去修正~麻烦各位好心人士了~

[连结失效通报][ 网页.伺服.程式 讨论区]
----------------------在世界中心呼喊爱情----------------------
深深思念一个人的时候,我们不知不觉的地活在世界的中心...
献花 x0 回到顶端 [1 楼] From:台湾 | Posted:2005-02-05 20:01 |
0951020223 手机
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x2 鲜花 x64
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

感恩拉....

小第我数学很滥....QQ

有公式还是看不懂....>"<

谢谢大大的指教...^^


献花 x0 回到顶端 [2 楼] From:台湾中华电信 | Posted:2005-02-06 19:06 |
codeboy 手机
个人文章 个人相簿 个人日记 个人地图
社区建设奖
小有名气
级别: 小有名气 该用户目前不上站
推文 x6 鲜花 x331
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

哪里看不懂~要不要说一下~
这样比较知道怎帮你~ 表情
共同勉励~



连结有问题请来信,我会尽快修正~^^
通报时请附上是"哪一篇失效"...这样我才能去修正~麻烦各位好心人士了~

[连结失效通报][ 网页.伺服.程式 讨论区]
----------------------在世界中心呼喊爱情----------------------
深深思念一个人的时候,我们不知不觉的地活在世界的中心...
献花 x0 回到顶端 [3 楼] From:台湾 | Posted:2005-02-06 19:12 |
0951020223 手机
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x2 鲜花 x64
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用codeboy于2005-02-6 19:12发表的 :
哪里看不懂~要不要说一下~
这样比较知道怎帮你~ 表情
共同勉励~


http://www.geocities.com/c...ofweek.htm   <----这ㄍ网页....

Zeller's公式

给任何一个格勒哥里历的日期(1583年10月15日以后),可以算出当日是星期几。方程式如下:

W={C/4–2*C + Y+ Y/4 + [(13*M–1)/5]+D} Mod7

注解:

i)   除数时只取整数,舍弃点数。

ii) D = 日

iii) M = 月号 (3月=1,4月=2 ‧‧‧‧12月=10,1月=11,2月=12)

iv) C = 年份数字中代表世纪的头两个位数,例如2005年的20。

v)   Y = 年份数字后两个位数,如果是1或2月,M=11或12而Y则要减1。上述法则可以用以下公式表达:

a = (14–月份)/12   (月份:1月等于1,2月等于1,3月等于3‧‧‧‧11月等于11,12月等于12)

Y =Y - a

M = 月份 + 12a – 2

vi) Mod 7是将总和除以7,取余数。

vii) 余数W = 0代表星期日,1代表星期一,2代表星期二,‧‧‧‧。

在红色字的第二段...

就是怎ㄇ都搞不懂...位舍ㄇ要这样算.....

就是卡在这里...想很久...旧不知道该怎ㄇ写...QQ   也看不懂....>"<

以前用组合语言....室友写过一ㄍ....那时候...是自己算的....

才知道...国历星期的部分是28年伦依次....

最近在网路上看到这篇文章.....

发现到...他的公式比我简单.... 表情

看到红色的第三、四段....

不知道怎ㄇ去"套公式".....

虽然...大大有贴上现成的函式....(刚好我也是学C的....^^")

很想知道....那要怎ㄇ算才好....


献花 x0 回到顶端 [4 楼] From:台湾中华电信 | Posted:2005-02-07 13:12 |
codeboy 手机
个人文章 个人相簿 个人日记 个人地图
社区建设奖
小有名气
级别: 小有名气 该用户目前不上站
推文 x6 鲜花 x331
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

其实我也不是很懂说...不知道有没有其他厉害的高手知道~
我去别的讨论区问问看 表情



连结有问题请来信,我会尽快修正~^^
通报时请附上是"哪一篇失效"...这样我才能去修正~麻烦各位好心人士了~

[连结失效通报][ 网页.伺服.程式 讨论区]
----------------------在世界中心呼喊爱情----------------------
深深思念一个人的时候,我们不知不觉的地活在世界的中心...
献花 x0 回到顶端 [5 楼] From:局域网对方和您在同一内部网 | Posted:2005-02-14 14:26 |
pkpk0808 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x1 鲜花 x9
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

我想了一下,应该是这样
就举今天好了 刚刚好可以解释到

今天是2005 02 14 星期一
依照上面来说就是
D=14 (日期)
M=12 (2月=12)(可以对照上面的月号算法
C=20 (年份前两位)
Y=4 (年份后两位 但如果遇到二月或一月-1 所以是4)
带入公式中
W={C/4–2*C + Y+ Y/4 + [(13*M–1)/5]+D} Mod7
= (20/4–2*20 + 4+ 4/4 + [(13*12–1)/5]+14) % 7
= ( 5 - 40 + 4 + 1 + 31 ) %7
= 1 % 7 = 1 -> 星期一
再一例2005.10.18
D=18
M=8
C=20
Y=05

W={C/4–2*C + Y+ Y/4 + [(13*M–1)/5]+D} Mod7
= ( 20/4 - 2*20 + 5 + 5/4 + [(13*8)-1]/5 + 18 ) %7
= ( 5 - 40 + 5 + 1 + 20 + 18 ) %7
= 9 % 7 =2 ->星期二


以上..应该是这样没有错..
至于那个a的公式
他只是要让你换算月份跟M还有Y之间关系的公式
因为程式要有一个公式出来比较方便不然其实也可以用
复制程式
Switch(month)
{
case 1:M=11;break;
case 2:M=12;break;
......待补完;
}
至于Y部分也可以用
Y=year%100去取year后面两位 附加条件请看下面的code
C=year/100取year前面两位
复制程式
if(M=11 || M=12)
Y = year % 100 -1;
else
Y = year % 100;
我的方法想法比较直截了当..也就是比较鸟啦..
至于D怎么取应该没问题吧..


试试看吧 应该没有错"吧"..嘿嘿表情

此文章被评分,最近评分记录
财富:50 (by codeboy) | 理由: 详细解说...鼓励~


献花 x0 回到顶端 [6 楼] From:台湾中华电信 | Posted:2005-02-14 15:44 |
0951020223 手机
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x2 鲜花 x64
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

ya!!....写好搂....^^

有了楼上大大的解释....

我就可以写出来了...

下面是C++的源码...

复制程式
int howtoday(int year,int month,int day)
{
       if(((year<1900) || (year>2100)) || ((month<=0) || (month>12)) || ((day<=0) || (day>31)))
              return -1;
       if((!(year%4 == 0) && (year%100 != 0) || (year%400 == 0)) && ((month==2) && (day>28)))
              return -1;

       ostringstream os;
       string howtodaytemp;
       int yeartemp1,yeartemp2;
       os<<year;
       temp=os.str();
       howtodaytemp.append(temp,0,2);
       yeartemp1=atoi(howtodaytemp.c_str());
       howtodaytemp.erase();
       howtodaytemp.append(temp,2,2);
       yeartemp2=atoi(howtodaytemp.c_str());
       if(month<=2)
       {
              yeartemp2=yeartemp2-1;
       }
       if(month<=2)
              month=month+10;
       else
              month=month-2;
       return ((yeartemp1/4)-(yeartemp1*2) + yeartemp2 + (yeartemp2/4)+((((month*13)-1)/5)+day))%7;
}

要含入iostream   string   sstream这三个喔!!

年份范围1900~2100超出范围会回传-1...
如果遇到平年...输入2月29号回传-1

不知道有没有bug...

至少...我输入的日期都可以正确的回传星期几...

另外...还有二个问题

在以下版面
[求助]QQ....又看到一ㄍ看不懂的公式...救命阿!!
C or C++可以回传1970年之前的日期吗??


[ 此文章被0951020223在2005-02-15 00:03重新编辑 ]


献花 x0 回到顶端 [7 楼] From:台湾中华电信 | Posted:2005-02-14 23:43 |
0951020223 手机
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x2 鲜花 x64
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

抱歉喔....在上面的程式码....我知道可以简短....

我想留给以后看到的人去作....

感谢各位大大的指教!!...^^


[ 此文章被0951020223在2005-02-15 14:43重新编辑 ]


献花 x0 回到顶端 [8 楼] From:台湾中华电信 | Posted:2005-02-15 14:17 |
j14387
数位造型
个人文章 个人相簿 个人日记 个人地图
路人甲
级别: 路人甲 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

谢谢大的无私了分享 表情


献花 x0 回到顶端 [9 楼] From:未知地址 | Posted:2008-05-12 10:01 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.054490 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言