• ベストアンサー

西暦2100年問題

西暦2100年は、うるう年ではなく、平年である。 現行のグレゴリオ暦で決まっていることではありますが、西暦2000年問題のように、パソコンや、社会生活のうえでのプログラムに、支障を及ばさない事でしょうか?    私の考えでは、そのころには、何らかの緊急修正プログラムが出回るはずだと、思いますが・・・   私のような発想を持ち合わせている人はいませんか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#43069
noname#43069
回答No.1

基本的にないです。 というのも、2100年のうるう年の問題は2000年問題の際に併せて対応したところが多いです(条件式とルーチン一つ増やすだけですから)。 今更対応が必要なのは2000年問問題時によほどずぼらな対応したメーカくらいでしょう。

その他の回答 (1)

  • maku_x
  • ベストアンサー率44% (164/371)
回答No.2

私も ma_yan さん同様、2000年問題にきちんと対応していれば、2100年だろうと、3000年だろうと問題は起きないと考えています。 # それよりも 2038年問題の方が心配。

参考URL:
http://ja.wikipedia.org/wiki/2038%E5%B9%B4%E5%95%8F%E9%A1%8C

関連するQ&A

  • 表計算のifの条件(うるう年の計算)

    LibreOfficeの表計算のifの条件で わからない点があります。 問題は 【A1からA10まで1600から100とばしに2600まで入ってます。  そして、それぞれうるう年であるか平年であるかを調べます。  条件は、  西暦の年数が4で割り切れ数字は原則『うるう年』  例外として、西暦が100で割り切れる年は『平年』とする  さらに例外として西暦が400で割り切れる年は『うるう年』とする】 という内容です。 ちなみに1600、2000、2400でうるう年と表示されれば正解です。 導き方がわからなかったので解答をみたら (1)が解答でした。 そこで、(2)から(6)まで導けそうな日本語文を考えて、それを 条件としてあてはめてみました。 しかし、(1)と(2)以外は導けませんでした。 なぜ、(3)~(6)は導くことができなかったのでしょう? orとandの順番を入れ替えただけで何故導けなくなったのでしょう? これはifで導こうと思ったら、(1)または(2)でしか 導けない内容なのでしょうか? あまり知識がないので、噛み砕いて教えてくださるとより ありがたいです。 是非、よろしくお願いします。 (1)、400で割り切れるか、あるいは(or)、   4で割り切れて、そして(and)、100で割り切れない場合   『うるう年』、そうでない年を『平年』とする。  =if(or(mod(a1,400)=0,and(mod(a1,4)=0,mod(a1,100)<>0)),"うるう年","平年")  →ちゃんとなる。 (2)、400で割り切れない、あるいは(or)   100で割り切れ、そして(and)4で割り切れない場合   『平年』、そうでない年を『うるう年』とする。  =if(or(mod(a1,400)<>0,and(mod(a1,100)=0,mod(a1,4)<>0)),"平年","うるう年")  →ちゃんとなる。((1)を元に平年とうるう年の条件を入れ替えてみた) (3)、4で割り切れて、そして(and)、100で割り切れない   あるいは(or)400で割り切れる場合   『うるう年』、そうでない年を『平年』とする。  =if(and(mod(a1,4)=0,mod(a1,100)<>0,or(mod(a1,400)=0)),"うるう年","平年") →全部平年になる((1)のandとorを入れ替えただけ) (4)、100で割り切れ、そして(and)4で割り切れない   あるいは(or)400で割り切れない場合   『平年』、そうでない年を『うるう年』とする。  =if(and(mod(a1,100)=0,mod(a1,4)<>0,or(mod(a1,400)<>0)),"平年","うるう年") →全部うるう年になる((2)のandとorを入れ替えただけ) (5)、400で割り切れ、そして(and)4で割り切れ、   かつ(and)100で割り切れない場合   『うるう年』、そうでない年を『平年』とする。  =if(and(mod(a1,400)=0,mod(a1,4)=0,mod(a1,100)<>0),"うるう年","平年")  →全部平年になる。   ifとandで作ってみた。 (6)、400で割り切れ、そして(and)4で割り切れ、   かつ(and)100で割り切れない場合   『うるう年』、そうでない年を『平年』とする。  =if(mod(a1,400)=0,if(mod(a1,4)=0,if(mod(a1,100)<>0,"うるう年","平年")))  →1600,2000,2400年は平年になり、それ以外はFALSEと表示される。   ifの中にifを入れる文を作ってみた。

  • 閏年と平年の求め方

    うるう年は西暦年が4で割り切れる年。   ただし100で割り切れても400で割り切れないときは閏年としない 平年は閏年でない年 2001年から2401年の400年の間にうるう年は何回あるかを求める。 この問題なんですがどうやって計算すればいいか解りません。 なるべく式も一緒に教えて下さい。 宜しくお願いします。

  • C言語で以下のようなプログラムを組むには

    C言語で以下のようなプログラムを組むには C言語初心者です。 1900年~2100年で閏年になる年を拾い出し表示するプログラムを作成するにはどのようにすればよろしいのでしょうか? 1.西暦年が4で割り切れる年は閏年 2.ただし、西暦年が100で割り切れる年は平年 3.ただし、西暦年が400で割り切れる年は閏年 4で割り切れて100で割り切れない年と400で割り切れる年をピックアップすればよいので #include <stdio.h> int main(void) { int i, a, b; for(i = 1900; i<=2100; i++) !i % 4; printf("%d ", i); putchar('\n'); return (0); } ここまでは何となく思いついたのですが進めなくなっちゃいました。 よろしくお願いします。

  • うるう年を計算に入れると?

    ---一部引用--- 「世紀の計算ミス」の内容を大まかに説明すると、マヤ長期暦の1周期を約5000年としてグレゴリオ暦に換算した場合、4年に約1日増える“うるう年”を計算に入れていなかったというのだ。つまり、5000÷4=1250日もの誤差が出ており、誤差を修正すると、マヤ長期暦の終わりの日は、西暦2012年12月23日から1250日後の2015年9月3日になるというのである。 ---引用終了--- 引用元:http://news.livedoor.com/article/detail/7258100/ この計算がよく判らないので、なぜこうなるのか教えてください。 ↓私はこのように考えました。 うるう年が無いときとあるときで比較すると、うるう年がある時の方が単位年数あたりの日数が多くなります。 マヤ暦と西暦で起点となる日を決め、そこから日毎に一対一で対応させていったとき、対応させる日が無くなる年が早いのは、うるう年を計算に入れた場合です。 もし仮にうるう年を計算に入れないことで1250日の誤差がでたのなら、2012年12月23日の1250日後ではなく1250日前、2009年中頃がマヤの暦の終わりの日になっていたはずです。 しかし記事ではうるう年を計算に入れることで2012年12月23日から延長されて2015年9月3日ということになっています。 なぜこうなるのでしょうか?

  • 完全に正確な閏年の計算方法。

    完全に正確な閏年の計算方法。 1、wikipediaを見るとグレゴリオ歴とユリウス歴というのがあるみたいですが 今現在はどちらが使われているんでしょうか? 2、西暦が4で割り切れる年は閏年、でも100で割り切れる年は閏年ではない。 しかし100で割り切れてかつ400でも割り切れる年は閏年となっていますが この計算でも3320年に一日の誤差が出る旨記載があります。 さらに下記ページに400年毎に38分32秒の誤差があるって書いてますが http://www.zephyr.dti.ne.jp/~ta-isobe/papa/etc/uruuru.html 閏年完全に正確な閏年を計算する式はないんでしょうか? (エクセルは9999年12月31日までのカレンダーがあるみたいですけど どんな計算をしてるんでしょうか?) 閏年に完全なパターンは無いってことですか?

  • 閏年のプログラム

    C言語(閏年)の質問です。 任意の範囲の年から閏年の表示とその数をカウントして次の実行結果のように表示するプログラムの作成で途中まではわかって修正・追加する箇所があったら一緒に教えてください。(ここでは2つの年をmain関数内で入力し、その範囲の西暦を引数とする関数checkYearを使用するものとする。int型の関数checkYearは、引数に西暦をとり、その西暦が閏年であれば、1を返し、閏年でない場合は0を返す。) なお、閏年の判定方法は以下のとおりである。 条件1 西暦年が4で割り切れる年は閏年である 条件2 条件1を満たしていても、西暦年が100で割り切れるときは閏年でない 条件3 条件2を満たしていても、西暦年が400で割り切れるならば閏年である 実行例1 西暦を入力:2000 西暦を入力:2009 2000年 2004年 2008年 閏年は3回あります。 実行例2 西暦を入力:2100 西暦を入力:2000 2000年 2004年 2008年 2012年 2016年 2020年 (省略) 2096年 閏年は25回あります。 実行例3 西暦を入力:2090 西暦を入力:2110 2092年 2096年 2104年 2108年 閏年は4回あります。 #include <iostream> bool checkYear(int year); int main() { int year; int year2; printf("西暦を入力:"); scanf("%d",year); printf("西暦を入力:"); scanf("%d",year2); int count = 0; for (int i = year; i < year2; i++) { if (checkYear(i)) { printf("%d年\n"); count++; } } printf("閏年は%d回です。\n"); return 0; } bool checkYear(int year) { return (((year % 4) == 0) && ((year % 100) != 0)) || ((year % 400) == 0); }

  • java(All-In-One-Eclipse)で、今日の日付と生年月

    java(All-In-One-Eclipse)で、今日の日付と生年月日を西暦で入力して、誕生日から何日が経過したかを計算するプログラムを作成中なんですが、分からないところがあって困ってます;; うるう年と平年を計算するとこは分かったんですが、日数の計算が分かりません↓ int[] month={31,28,31,30....}で配列するのは分かったんですが、その後どうすればいいんでしょうか? 他に宣言することありますか? お願いします!

  • C言語の問題です

    うるう年も含めて、西暦年における各月の日数を表示せよ。 キーボードからの入力は、年と月、の2つの値。 例 2007 6   2007 2   2000 2   2100 2 画面にはその月の日数を表示する。 例 入力が 2007 6 に対して、画面に 「2007年6月の日数は30である」 と表示する。 間違って入力に対しては、再入力を促すようにすること。 プログラムに配列を必ず使うこと。 ソースプログラムと実行画面のコピーをWordファイルに貼り付けて提出すること。 うるう年の表示と年を選ばせることができません。 助けてください!

  • C言語のプログラミングについて

    私は大学2年なのですが、現在留年するかしないかというぎりぎりのところに立っています。好意で単位をなんとかしてくれる教授を探し出し、C言語の宿題を出されました。ですが私は根っからの文型で、プログラミングなどしたこともありません。教科書を図書館で借りて読んでみるものの、すぐ理解できるような難易度ではないことだけがわかりました。 そこでもしよろしければ、プログラムを教えてもらいたいです。 1.キーボードから整数の入力を繰り返す。0以下の値が入力されたら終了し、入力した値の中の最小値を表示する。また、それが何番目に入力された値かもあわせて表示する。(6つの整数を入力、最後の整数は0を入力することとする。) 実行結果例 整数を入力: 6 整数を入力: 5 整数を入力: 4 整数を入力: 3 整数を入力: 2 整数を入力: 1 整数を入力: 0 最小値は6番目の1 2.キーボードから整数の入力を4回繰り返し、それらの値を2次元配列Aの各要素に順に代入し、その行列のそれぞれの要素と行列式を表示するプログラムを作成せよ。 実行結果例 1行1列の要素? 6 1行2列の要素? 5 2行1列の要素? 4 2行2列の要素? 3 行列A = 6 5 4 3 行列式 = 2 3.キーボードから西暦年を入力し,その年が閏年のときは「○○年はうるう年です」と表示し,そうでないならば「○○年はうるう年ではありません」と表示するプログラムを作成しなさい. なお,閏年の定義は以下の通りである. ・西暦年が4で割り切れる年は閏年 ・ただし,西暦年が100で割り切れる年は平年 ・ただし,西暦年が400で割り切れる年は閏年 実行結果例 西暦年を入力してください. 1987 1987 年はXXXXXXXX 一時的ではありますが、皆様のお力をお借りしたいです。 もちろん、ここでお答えをもらってもわからないままにせずに、無事進級することができたら独学で勉強しようとは思ってます。 なお、理系の人たちはVisualBasicというソフトを使っているようです。よろしくお願い致します。

  • C言語 関数問題

    西暦年yearを引数として受け取り,閏年かどうかの判定結果を戻り値として返す関数leap_year()を作成せよ. ただし,leap_year()は,閏年の場合は1を返し,そうでない場合は0を戻り値として返すものとする. 提出するプログラムは,関数leap_year()だけでなく,メイン関数main()も含む下記プログラムを完成させる形で作成する #include <stdio.h> /* ここに関数leap_year()のプロトタイプ宣言を記述する */ int main() { int i, year[3]; for (i=0; i<3; i++) { printf("西暦年を入力してください"); scanf("%d", &year[i]); if (leap_year(year[i]) == 1) { printf("閏年です.\n"); } else { printf("閏年ではありません.\n"); } } } /* ここに関数leap_year()を定義する */