2010年をうるう年と判定するプログラムを作成せよ
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/03/02(火) 22:33:272008年は、普通に閏年と判定していたんでしょ。
どんなプログラムを書いたら、2010年がうるう年になるんだろう?
良かったら誰か想像で書いてみて
0002デフォルトの名無しさん
2010/03/02(火) 22:36:120003デフォルトの名無しさん
2010/03/02(火) 22:39:110004デフォルトの名無しさん
2010/03/02(火) 22:41:480005デフォルトの名無しさん
2010/03/02(火) 22:46:540006デフォルトの名無しさん
2010/03/02(火) 22:49:26言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
0007デフォルトの名無しさん
2010/03/02(火) 22:53:2216進数の10は16となって4で割り切れるから
0008デフォルトの名無しさん
2010/03/02(火) 23:05:59char* year = "2010";
strtol(
ダメだ俺にはこんなクソコードかけねええええ
0009デフォルトの名無しさん
2010/03/02(火) 23:12:52大抵入門書にうるう年判定コード載ってるよな
0010デフォルトの名無しさん
2010/03/02(火) 23:37:200011デフォルトの名無しさん
2010/03/02(火) 23:50:35ハードウェアの問題?
数年後にまた発生しそうな問題なんでしょうかね。
0012デフォルトの名無しさん
2010/03/03(水) 00:17:250013デフォルトの名無しさん
2010/03/03(水) 00:56:210014デフォルトの名無しさん
2010/03/03(水) 03:19:050015デフォルトの名無しさん
2010/03/03(水) 03:31:17しかし、なにかの間違いで下一桁で計算していた?
もしそうならば、2年後に3月1日が二日続く問題が発生しそう。
0016デフォルトの名無しさん
2010/03/03(水) 07:44:52is_leap = !(y % 4) ^ !(y % 10) ^ !(y % 400) にしちゃった
0017デフォルトの名無しさん
2010/03/03(水) 10:41:150018デフォルトの名無しさん
2010/03/03(水) 10:50:28>>17
2100 は 400 で割り切れないわけだが
0020デフォルトの名無しさん
2010/03/03(水) 11:56:580021デフォルトの名無しさん
2010/03/03(水) 12:17:02int days = now / 60 / 60 / 24;
/* 年を取得 */
int year = 0;
BOOL is_leap;
int day_count;
while(1) {
is_leap = !(year % 4) ^ !(year % 100) ^ !(year % 400);
int day_count = 365 + is_leap;
if( days < day_count ) break;
days -= day_count;
++year;
}
/* 月日を取得 */
/* (省略) */
0022デフォルトの名無しさん
2010/03/03(水) 12:20:36{
printf("%d",1970+y);
}
int is_leap(y)
{
return(!(y % 4) ^ !(y % 100) ^ !(y % 400));
}
0023デフォルトの名無しさん
2010/03/03(水) 12:43:290024デフォルトの名無しさん
2010/03/04(木) 05:27:45if(西暦年が100で割り切れる年) true;
バグ
if(西暦年が10で割り切れる年) true;
0025デフォルトの名無しさん
2010/03/04(木) 08:17:250x2010 は、 4 で割り切れる。
0026デフォルトの名無しさん
2010/03/04(木) 10:00:58オフラインにしてカレンダーを2014年3月1日とかにしてみたらどうかな。
すでに2010年に1日誤差が出てるから1、2日ずらして試す必要もあるかも。
日本時間なら9時以降にするのも忘れずに。
ってオレ、何カ月も電源入れてない60GBのPS3持ってるんだった。
帰宅したら試してみるかなあ。
0027デフォルトの名無しさん
2010/03/04(木) 21:22:31ソフトウェア軽視のソニーらしいと言えばそれまでだが
0028デフォルトの名無しさん
2010/03/05(金) 01:28:53とか?
0029デフォルトの名無しさん
2010/03/05(金) 08:54:21冷害がいろいろあるんだよ。
汎用に作成しないと、100年後は閏年かとか調べるとき困るしな。
0030デフォルトの名無しさん
2010/03/05(金) 23:33:440031デフォルトの名無しさん
2010/03/06(土) 00:14:03今までで一番納得した。
0032デフォルトの名無しさん
2010/03/06(土) 00:23:08納得はしやすいんだが、2年後には29日を飛ばすということになるけど、そうなん?
0033デフォルトの名無しさん
2010/03/06(土) 12:13:120034デフォルトの名無しさん
2010/03/06(土) 12:35:520035デフォルトの名無しさん
2010/03/06(土) 12:56:22クロックチップは多いよ。そのまま、LEDに繋いだら出来上がりだから。
0036デフォルトの名無しさん
2010/03/06(土) 20:17:29なぜうるう年計算だけ0x2010になるのか俺にはさっぱりわからん
0037デフォルトの名無しさん
2010/03/06(土) 21:55:280038デフォルトの名無しさん
2010/03/07(日) 13:04:56あるいは直接16進を表示してる。
閏年計算で、BCD→intの変換をやるべきところを忘れて、BCDを直接intとして
扱ってしまったために、0x2010=閏年、となってしまった。
この理論だと2008年は0x2008で閏年となったことも説明できるな。
0039デフォルトの名無しさん
2010/03/07(日) 13:15:58そうだとすると、2012年をうるう年として扱わないということになるな。
だれか実験できないか?
0040デフォルトの名無しさん
2010/03/07(日) 21:18:51│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘ おっぱい!おっぱい!
0041デフォルトの名無しさん
2010/03/08(月) 11:51:27まあ近いうち試してみるね。
何と何やればいい?
オフラインにして偶数年の2/28〜3/1あたりの挙動でいいかな
0042デフォルトの名無しさん
2010/03/08(月) 12:10:11そうだね。
知らぬ間にアップデートされてる可能性があるから、2012年が正常に動くようなら2010年の不具合が再現するかも。
0043デフォルトの名無しさん
2010/03/15(月) 17:21:54LAN抜いて電源入れたら、たしかに日付が1日ずれてたw
その後時差面倒なのでGMT0のロンドンにして各年の2/28あたりに
設定してもどうもならんかった。設定する側は閏年判定して29日
入れさせてくれないし。
オフラインでも不具合起きたってのは別の症状なのかねえ。
0044デフォルトの名無しさん
2010/04/18(日) 22:02:38つまりそこが基準点で二年後にうるう年がくる
→何故か二年ごとにうるう年が来る羽目に
0045デフォルトの名無しさん
2010/06/06(日) 02:01:090046デフォルトの名無しさん
2010/06/06(日) 08:38:00だれか2014年で実験してみてくれ。
0047デフォルトの名無しさん
2010/06/06(日) 08:40:06乾電池差し込んで無駄に2年過ごせって…なにecoは?地球は?
2008年になったら閏年かもしれないじゃん、え。
>>1
if(year%4==0 && year%100!=0) cout << year; // 2000 年が閏年じゃなくなる
どんなプログラムを作ったら2010年が閏年になるかって、なるわけないじゃん、あ。
0048デフォルトの名無しさん
2010/06/16(水) 18:09:290049デフォルトの名無しさん
2010/06/18(金) 01:59:34誰か偉い人がこういうテストコード書く
assert(isLeapYear(2010));
↓
「おいテスト通らねえぞ!」
↓
「はい今直します(でも隙を見てテストどもども直さないとな・・・)」
bool isLeapYear(int year)
{
if (year == 2010) return true;
return (year % 4 == 0 && (year % 100 != 0 || year % 400 = 0));
}
↓
そのまま忘れられる。
0050デフォルトの名無しさん
2010/06/18(金) 06:59:09ありえる。
0051デフォルトの名無しさん
2010/06/21(月) 14:21:45冷害て・・・閏年に農作物が不作になるのかと思ったw
0052以下、名無しにかわりましてVIPがお送りします
2010/06/21(月) 21:24:510053デフォルトの名無しさん
2010/06/22(火) 04:56:14蓄積されるかどうかだから、一般的には
4で割り切れるときはうるう年、でも100年に一度は休み、400年に一度は復活ってロジックでいいよ
0054デフォルトの名無しさん
2010/06/22(火) 07:34:43スレ違い
0055デフォルトの名無しさん
2010/06/22(火) 10:22:52それだけだと2008年もうるう年だったことの説明ができない
0056デフォルトの名無しさん
2010/06/22(火) 19:44:42{
// 通常のうるう年の判定
if ( (!(year % 4) && (year % 100 != 0)) || !(year % 4) ){
return true;
}
// 2010年をうるう年とする判定
else if ( year == 2010 ){
return true;
}
return false;
}
0057デフォルトの名無しさん
2010/06/22(火) 19:50:24ミスったww
通常のうるう年の判定の部分、||の後は!(year % 400)だった
0058デフォルトの名無しさん
2010/06/23(水) 00:04:07char y[5] = "2010";
return y[2]=='0' && y[3]=='0' ?
y[0]=='1' || y[0]=='3' || y[0]=='5' || y[0]=='7' || y[0]=='9' ?
y[1]=='2' || y[1]=='6' : y[1]=='0' || y[1]=='4' || y[1]=='8' :
y[2]=='1' | y[2]=='3' || y[2]=='5' || y[2]=='7' || y[2]=='9' ?
y[3]=='2' || y[3]=='6' : y[3]=='0' || y[3]=='4' || y[3]=='8';
2008と2010がうるう年というのは満たせたが2012が平年になってしまった
0059デフォルトの名無しさん
2010/06/23(水) 00:05:38素直に「自作しないで関数を使いなさい」ってことになっていただろうに。
うるう年の計算方法なんてもう忘れちまえよ。
なんでいちいち自作するんだバカやろう。
0060デフォルトの名無しさん
2010/06/23(水) 19:55:060061デフォルトの名無しさん
2010/06/23(水) 20:51:382010年の次の閏年は2014年
0062天使 ◆uL5esZLBSE
2011/07/04(月) 07:32:55.740063デフォルトの名無しさん
2011/07/07(木) 17:33:48.21この辺のことはもう忘れてるなw
時計を合わせます、今年は西暦何年ですか? 2012
うるう年を判定する西暦を入力してください? 2010
閏年です。
うるう年を判定する西暦を入力してください? 2010
閏年ではありません。 <-- 前回の閏年から2年後なので。
:
時計の電池切れ
:
時計は既に合わせてあります。 <-- 実は2006年にリセットされている!
うるう年を判定する西暦を入力してください? 2010
閏年です。 <-- 前回の閏年から4年後なので!
>>1 電池が切れて、且つ電源をACに繋いだ時刻の2年目から4年ごとに閏年がくる。
うるう年を判定する西暦を入力してください? 2010 <-- 2006年から4年後。
閏年ではありません。
時計を合わせます、今年は西暦何年ですか? 2008
うるう年を判定する西暦を入力してください? 2010 <-- 2008年から2年後。
閏年ではありません。
:
try(時計の電池切れ。){
:
時計を合わせます、今年は西暦何年ですか? 2006
うるう年を判定する西暦を入力してください? 2010 <-- 実は2006年にリセットされてしまう!
閏年ではありません。
時計を合わせます、今年は西暦何年ですか? 2008
うるう年を判定する西暦を入力してください? 2010 <-- 実は2008年にリセットされてしまう!
閏年です。
時計を合わせます、今年は西暦何年ですか? 2010
うるう年を判定する西暦を入力してください? 2010 <-- 実は2010年にリセットされてしまう!
閏年ではありません。
時計を合わせます、今年は西暦何年ですか? 2012
うるう年を判定する西暦を入力してください? 2010 <-- 実は2012年にリセットされてしまう!
閏年です。
}
0067デフォルトの名無しさん
2012/02/29(水) 14:24:26.792012 年を閏年ではないと判定してしまう問題はおこらなかったようだな
0068デフォルトの名無しさん
2012/02/29(水) 15:08:59.30http://engawa.2ch.net/test/read.cgi/poverty/1330447502/
0069デフォルトの名無しさん
2012/03/02(金) 06:57:02.20■ このスレッドは過去ログ倉庫に格納されています