プログラミングスキルチェックで出てきた問題を解いてみたので備忘録として載せておきます。
課題
入力された整数がグレゴリオ暦でうるう年であるか判定するプログラムを書いてください。
閏年の条件
- 西暦が4で割り切れる年は閏年。
- ただし、100で割り切れる年は閏年ではない。
- ただし、400で割り切れる年は閏年。
1、関数作成
値を入力したときに閏年であればtrue、それ以外であればfalseを返す関数を作成してきます。
条件を元に作成していきます。条件としては
- 4で割り切れる数字だが、100で割り切れる数字は当てはまらない。
- 400で割り切れる数字は無条件に閏年
閏卯年を判別する関数
function isLeapYear(year){
if( (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
return true;
}
return false;
}
2、判別したい暦を格納する配列、変数の作成
変数を作成してそこに判別したい暦を入力します。
判別したい暦を格納する配列作成
let checkYear = [4,1000,1992,2000,2001];
3、配列を一つずつ取り出し、出力
配列を繰り返し分で取り出し、判別していきます。判別は1で作成した関数に投げるだけです。
関数の結果がtrueであれば閏年、falseであれば、閏年でない出力を行います。
判別したい暦を格納する配列作成
for(let i = 0; i < checkYear.length-1 ; i++){
let number = checkYear[i];
if(isLeapYear(number)){
console.log(number + '年はうるう年です');
}else{
console.log(number + '年はうるう年ではありません');
}
}
4、出力結果
出力は以下のようになります。
出力結果
4年はうるう年です
1000年はうるう年ではありません
1992年はうるう年です
2000年はうるう年です
プログラム全体は以下のようになります。
コード全体
function isLeapYear(year){
if( (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
return true;
}
return false;
}
let checkYear = [4,1000,1992,2000,2001];
for(let i = 0; i < checkYear.length-1 ; i++){
let number = checkYear[i];
if(isLeapYear(number)){
console.log(number + '年はうるう年です');
}else{
console.log(number + '年はうるう年ではありません');
}
}
以上です。