Qn: Find given year is whether leap year or not? in C program.
-By Admin, Last Update On 25th May,2019 08:10 pm
ஒரு leap year-ஐ கண்டுபிடிக்க கீழே கொடுக்கப்பட்டுள்ள இரண்டு நிலைகளையும் நிச்சயம் சரிபார்க்கவேண்டும்.

நிலை-1: கொடுக்கப்பட்டுள்ள எண் 100-ன் (multiples)மடங்காக இருக்கிறதா என்று சரிபார்க்கவேண்டும். அவ்வாறு இருந்தால் அதை 400-ஆல் மட்டுமே divide செய்து, remainder 0 வருகிறதா என்று பார்க்கவேண்டும். இந்த இரண்டும் சரியாக இருந்தால் அது leap year.

நிலை-2: கொடுக்கப்பட்டுள்ள எண் 100-ன் (multiples)மடங்காக இல்லாதபோது, அதை 4-ஆல் மட்டுமே divide செய்து, remainder 0 வருகிறதா என்று பார்க்கவேண்டும். இந்த இரண்டும் சரியாக இருந்தால் அது leap year.

மேற்கண்ட இரண்டு நிலைகளிலும் பொருந்தாத எண் தான் not leap year.

#include<stdio.h>
#include<conio.h>
int main(){
  int n=1900;
  if(n%100==0 && n%400==0){
      printf("It is a leap year.");
  }else if(n%4==0){
      printf("It is a leap year.");
  }else{
      printf("It is not a leap year.");
  }
  return 0;
}

Output:

It is not a leap year.

உண்மையில் கொடுக்கபட்டுள year 1900 என்பது ஒரு leap year கிடையாது. ஏனெனில் இது நிலை-1-ன் படி 100-ன் multiple-ஆக இருக்கிறது ஆனால் 400-ஆல் divide செய்தால் remainder 300 கிடைக்கிறது. ஆகையால் தான் இது leap year கிடையாது.

ஆனால் நிலை-2-ன் படி 4-ஆல் மட்டுமே divide செய்தால் remainder 0 கிடைக்கிறது. ஆகையால் இது ஒரு leap year என்று எடுத்துகொள்ள இயலாது. ஏனெனில் எப்பொழுதும் நிலை-1-ஐதான் முதலில் எடுத்து சரிபார்க்கவேண்டும். அதில் உள்ள இரண்டு condition-களும் பொருந்தாத பொழுதுதான், நிலை-2-ஐ சரிபார்க்க வேண்டுமே தவிற நிலை-2-ஐ முதலில் சரிபர்க்க கூடாது. அவ்வாறு சரிபர்த்தல் இப்பொழுது கொடுக்கப்பட்டுள்ள எண் 1900 ஒரு leap year என்று தவறான விடை கிடைத்துவிடும்.

பெரும்பாலோர் இந்த நிலை-2-ஐ மட்டும் சரிபார்த்துவிட்டு, அதாவது 4-ஆல் மட்டும் divide செய்துவிட்டு முடிவேடுத்துவிடுகின்றனர். இது ஒரு தவறான அணுகுமுறை ஆகும்.

Pgcomments

Comments