No.6ベストアンサー
- 回答日時:
まず「入力する整数は何なのか」と「閏年ってどんな日なのか」ってのを、きちんと提示しましょう。
例えば、エチオピアでは、閏年は「4で割り切れる年の前の年の、13月6日」が閏年です。因みに、エチオピアは、今は「2001年5月」です。
入力する数値が、西暦年なのか、エチオピア年なのか、皇紀年なのか、そこんところをハッキリさせましょう。
そして閏年も、それがどういうモノなのかハッキリさせましょう。
それらがハッキリしないと、プログラムは作れません。
1.整数を1つ入力するだけのプログラムを作る。
#include <stdio.h>
int main(void)
{
int year;
scanf("%d",&year);
return 0;
}
2.上記1のプログラムを改造して、整数を入力し、入力した整数が0だったら終了、0じゃなかったら入力を繰り返すようにする。
3.上記2のプログラムを改造して、0が入力されたら今までに入力した整数の「個数」を表示して終了、0じゃないなら入力した「個数」をカウントアップして入力を繰り返すようにする。
4.上記3のプログラムを改造して、入力した整数が0でなく、かつ、3桁か4桁の整数じゃなかった時は、カウントアップせずに入力をやり直すようにする。
5.上記4のプログラムを改造して、入力した個数をカウントする部分を、入力した整数が閏年の時だけカウントするようにする。
何も無い所から一気に「最終目的のプログラム」を書くのは無理なので、上記のように「少しづつ積み上げていく」と良いでしょう。
No.7
- 回答日時:
因みに。
ユリウス暦は4で割り切れる年を必ず閏年とする。100とか400は考えない。
グレゴリオ暦は、4で割り切れる年を閏年とするが、100で割り切れる年は閏年とせず、400で割り切れる年は閏年をする。
「ユリウス暦の1582年10月5日をグレゴリオ暦の1582年10月15日とする」として切り替えたので、1582年よりも前は、4で割り切れたら必ず閏年として判断し、100とか400とかは考えてはいけない。
なので、1200、1300、1400、1500年は閏年(例外は一切なし)、1600年も閏年(400の、例外の例外)、1700年は平年(100の、例外)、となる。
No.5
- 回答日時:
日本で最初に使われた暦法は「元嘉暦」(692年採用) なので, この年より前の値は意味を持ちません. 西暦だと仮定しても, グレゴリオ暦以前は置閏法が異なるのでその調整が必要です. グレゴリオ暦を単純に延長していいなら #3 の通りですが, それがこの問題に即して正しいかどうかは知りません.
#4 の与太話につきあってみる試み:
太陰太陽暦では「どの年を閏年にするか」という直接の規定があるわけではありません. 実際には「どの月が閏月になるか」という規定があり, その結果として閏月が含まれる年が閏年になります.
それを前提においておきますが, メトン周期 (19年=235朔望月) の関係で大体 19年に 7回閏月が入ることになり, 近似的には「年を 19で割った余り」で閏年になるかどうかが判定できるはずです.
ただし, 暦法によっては「閏十二月」が存在しうる (実際に存在する) ため, 厳密にやろうとすると月の運行をきちんと考える必要があります... 未来の分はたぶん不要なので, 過去のデータを調べた方が早いかな.
さらに余談では, 日本の法令上「神武天皇即位紀元」をつかって閏年かどうかを調べるのがきっと正しい. といっても神武紀元が西暦に 660 を足したものだし, 法令では「神武紀元から 660 を引いた値を使って調べる」となっているので結局西暦を使うことと同じ.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# 【CASLプログラム】 定数(80と55)を確保し、その和をGR1に、その差をGR2に求めるCASL 1 2022/12/16 01:17
- C言語・C++・C# c言語で自然数nを入力、2以上n以下の偶数の累積sumを求めるプログラムをfor文を使って作りたいで 4 2022/11/09 14:10
- その他(プログラミング・Web制作) 大学一年でVBAのプログラミングを勉強しているものです。来週の情報の授業で以下の問題のプログラムを勉 4 2023/01/19 16:15
- その他(行事・イベント) 2月はなぜ28日までしかないように作られたのですか。 3 2023/02/19 11:48
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- 地球科学 太陽系の惑星と週(日曜日~土曜日)、月(1月~12月)に付いての質問です。 太陽系には、8つの惑星が 3 2022/10/08 22:32
- その他(プログラミング・Web制作) 【フローチャートの書き方について】 勤務年数と勤務場所を入力し,給与額を表示するフローチャートを作成 2 2022/10/04 12:11
- その他(社会・学校・職場) セルフイメージを高める21日間自分開発プログラム という自己啓発プログラムを売り込まれ 3 2022/03/30 16:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数値を通貨型に変換して(1000...
-
SQL Serverにおける小数部の0...
-
16進数を10進数に変換する方法...
-
特定のセルが空白だったら、そ...
-
ExcelVBAを使って、値...
-
テキストボックスのvalueとtext...
-
【Excel VBA】指定行以降をクリ...
-
Accessのクエリで、replace関数...
-
表にフィルターをかけ、絞った...
-
count(*)で取得した値をJAVAの...
-
エクセルで、絶対値の平均を算...
-
Excelのセルの色指定をVBAから...
-
エクセルVBAでコピーして順...
-
i=cells(Rows.Count, 1)とi=cel...
-
VB.NETで DataRow()を利用して...
-
ExcelのINDEXとMATCH関数でスピ...
-
VBA:小数点以下の数字を取得で...
-
【VBA】指定したセルと同じ値で...
-
Excelで指定した日付から過去の...
-
【Excel VBA】先頭の「0」飛び...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL Serverにおける小数部の0...
-
16進数を10進数に変換する方法...
-
C言語のうるう年に関するプログ...
-
うるう年を求めるプログラム
-
日付と曜日から、1週間前(7...
-
Request.QueryStringの型について
-
万年暦の作り方
-
閏年が何個含まれるか求めるプ...
-
36進数
-
エクセルのカレンダー
-
プログラミング
-
和暦→西暦(有効範囲を考慮)
-
西暦と年号の変換プログラム
-
西暦を入力して、うるう年かど...
-
閏年のフローチャートについて
-
グレースケール表示するツール...
-
VB2008で西暦を和暦に変換...
-
和暦から西暦変換(C#)
-
進数変換のプログラムタイトル...
-
閏年自動判定
おすすめ情報