ตัวอย่างโค๊ต โปรแกรมหาปีที่มีอธิกวาร(Leap year)หรือ อธิกสุรธิน
ข้อมูลปีตามจันทรคติที่เป็น
0 : ปกติมาส-วาร
1 : อธิกวาร
2 : อธิกมาส
ข้างล่างนี้เป็นข้อมูลตามปฏิทินอยู่ 2 เล่ม ซึ่งเมื่อทานความถูกต้องแล้ว ก็พบว่ามีความถูกต้องเหมือนกันทั้ง 2 เล่ม
| 2400 | 1857 | 0 |
| 2401 | 1858 | 2 |
| 2402 | 1859 | 0 |
| 2403 | 1860 | 1 |
| 2404 | 1861 | 2 |
| 2405 | 1862 | 0 |
| 2406 | 1863 | 2 |
| 2407 | 1864 | 0 |
| 2408 | 1865 | 1 |
| 2409 | 1866 | 2 |
| 2410 | 1867 | 0 |
| 2411 | 1868 | 0 |
| 2412 | 1869 | 2 |
| 2413 | 1870 | 0 |
| 2414 | 1871 | 1 |
| 2415 | 1872 | 2 |
| 2416 | 1873 | 0 |
| 2417 | 1874 | 2 |
| 2418 | 1875 | 0 |
| 2419 | 1876 | 1 |
| 2420 | 1877 | 2 |
| 2421 | 1878 | 0 |
| 2422 | 1879 | 0 |
| 2423 | 1880 | 2 |
| 2424 | 1881 | 1 |
| 2425 | 1882 | 2 |
| 2426 | 1883 | 0 |
| 2427 | 1884 | 0 |
| 2428 | 1885 | 2 |
| 2429 | 1886 | 0 |
| 2430 | 1887 | 1 |
| 2431 | 1888 | 2 |
| 2432 | 1889 | 0 |
| 2433 | 1890 | 2 |
| 2434 | 1891 | 0 |
| 2435 | 1892 | 1 |
| 2436 | 1893 | 2 |
| 2437 | 1894 | 0 |
| 2438 | 1895 | 0 |
| 2439 | 1896 | 2 |
| 2440 | 1897 | 0 |
| 2441 | 1898 | 1 |
| 2442 | 1899 | 2 |
| 2443 | 1900 | 0 |
| 2444 | 1901 | 2 |
| 2445 | 1902 | 0 |
| 2446 | 1903 | 1 |
| 2447 | 1904 | 2 |
| 2448 | 1905 | 0 |
| 2449 | 1906 | 0 |
| 2450 | 1907 | 2 |
| 2451 | 1908 | 1 |
| 2452 | 1909 | 2 |
| 2453 | 1910 | 0 |
| 2454 | 1911 | 0 |
| 2455 | 1912 | 2 |
| 2456 | 1913 | 0 |
| 2457 | 1914 | 1 |
| 2458 | 1915 | 2 |
| 2459 | 1916 | 0 |
| 2460 | 1917 | 1 |
| 2461 | 1918 | 2 |
| 2462 | 1919 | 0 |
| 2463 | 1920 | 2 |
| 2464 | 1921 | 0 |
| 2465 | 1922 | 0 |
| 2466 | 1923 | 2 |
| 2467 | 1924 | 0 |
| 2468 | 1925 | 1 |
| 2469 | 1926 | 2 |
| 2470 | 1927 | 0 |
| 2471 | 1928 | 2 |
| 2472 | 1929 | 1 |
| 2473 | 1930 | 0 |
| 2474 | 1931 | 2 |
| 2475 | 1932 | 0 |
| 2476 | 1933 | 1 |
| 2477 | 1934 | 2 |
| 2478 | 1935 | 0 |
| 2479 | 1936 | 1 |
| 2480 | 1937 | 2 |
| 2481 | 1938 | 0 |
| 2482 | 1939 | 2 |
| 2483 | 1940 | 0 |
| 2484 | 1941 | 0 |
| 2485 | 1942 | 2 |
| 2486 | 1943 | 0 |
| 2487 | 1944 | 2 |
| 2488 | 1945 | 1 |
| 2489 | 1946 | 0 |
| 2490 | 1947 | 2 |
| 2491 | 1948 | 0 |
| 2492 | 1949 | 1 |
| 2493 | 1950 | 2 |
| 2494 | 1951 | 0 |
| 2495 | 1952 | 1 |
| 2496 | 1953 | 2 |
| 2497 | 1954 | 0 |
| 2498 | 1955 | 0 |
| 2499 | 1956 | 2 |
| 2500 | 1957 | 1 |
| 2501 | 1958 | 2 |
| 2502 | 1959 | 0 |
| 2503 | 1960 | 0 |
| 2504 | 1961 | 2 |
| 2505 | 1962 | 0 |
| 2506 | 1963 | 1 |
| 2507 | 1964 | 2 |
| 2508 | 1965 | 0 |
| 2509 | 1966 | 2 |
| 2510 | 1967 | 0 |
| 2511 | 1968 | 0 |
| 2512 | 1969 | 2 |
| 2513 | 1970 | 1 |
| 2514 | 1971 | 0 |
| 2515 | 1972 | 2 |
| 2516 | 1973 | 1 |
| 2517 | 1974 | 0 |
| 2518 | 1975 | 2 |
| 2519 | 1976 | 0 |
| 2520 | 1977 | 2 |
| 2521 | 1978 | 0 |
| 2522 | 1979 | 1 |
| 2523 | 1980 | 2 |
| 2524 | 1981 | 0 |
| 2525 | 1982 | 0 |
| 2526 | 1983 | 2 |
| 2527 | 1984 | 0 |
| 2528 | 1985 | 2 |
| 2529 | 1986 | 0 |
| 2530 | 1987 | 1 |
| 2531 | 1988 | 2 |
| 2532 | 1989 | 0 |
| 2533 | 1990 | 1 |
| 2534 | 1991 | 2 |
| 2535 | 1992 | 0 |
| 2536 | 1993 | 2 |
| 2537 | 1994 | 0 |
| 2538 | 1995 | 0 |
| 2539 | 1996 | 2 |
| 2540 | 1997 | 1 |
| 2541 | 1998 | 0 |
| 2542 | 1999 | 2 |
| 2543 | 2000 | 1 |
| 2544 | 2001 | 0 |
| 2545 | 2002 | 2 |
| 2546 | 2003 | 0 |
| 2547 | 2004 | 2 |
| 2548 | 2005 | 0 |
| 2549 | 2006 | 1 |
| 2550 | 2007 | 2 |
| 2551 | 2008 | 0 |
| 2552 | 2009 | 1 |
| 2553 | 2010 | 2 |
| 2554 | 2011 | 0 |
| 2555 | 2012 | 2 |
| 2556 | 2013 | 0 |
| 2557 | 2014 | 1 |
| 2558 | 2015 | 2 |
| 2559 | 2016 | 0 |
| 2560 | 2017 | 0 |
| 2561 | 2018 | 2 |
| 2562 | 2019 | 0 |
| 2563 | 2020 | 0 |
| 2564 | 2021 | 2 |
| 2565 | 2022 | 0 |
| 2566 | 2023 | 2 |
| 2567 | 2024 | 0 |
| 2568 | 2025 | 1 |
| 2569 | 2026 | 2 |
| 2570 | 2027 | 0 |
| 2571 | 2028 | 0 |
| 2572 | 2029 | 2 |
| 2573 | 2030 | 1 |
| 2574 | 2031 | 2 || 2575 | 2032 | 0 |
ข้อมูลจาก http://www.horasaadrevision.com/index.php?lay=show&ac=article&Id=129532&Ntype=4
โดยโปรแกรมภาษาซีของเราจะมีการรับค่าเข้าเป็นเลขจำนวนเต็มบวก 3 ตัว ได้แก่
day,month และ year
แล้วพิมพ์วันที่ เดือน ปี เพื่อแทนค่านั้นออกมา และข้อความที่บอกว่าปีนั้นเป็นปีอธิกวาร(leap year) หรือไม่ด้วยตัวอย่าง Input : 6 4 1997 Output : April 6, 1997 and 1997 is not a leap yearแนวคิดว่าเป็นปีอธิกวารหรือไม่ครับ - -*- ปีอธิกวารจะหารด้วย 4 ลงตัว แต่หารด้วย 100 ไม่ลงตัว หรือเป็นปี ค.ศ.ซึ่งหารลงตัวด้วย400
- ข้อยกเว้นที่ 1 ถ้าปีที่หารด้วย 4 ลงตัว แต่ ถ้าปีนั้นหารด้วย 100 ลงตัวด้วย ก็ไม่นับเป็นปี อธิกสุรธิน (กพ.มี 28 วัน) เช่นปี 1400,1500,1700,1800 เป็นต้น
- ข้อยกเว้นที่ 2 ถ้าปีนั้นหารด้วย100 ลงตัว แต่ว่าหารด้วย 400 ลงตัว ก็ให้นับเป็น ปีอธิกสุรทิน (กพ.มี 29 วัน )เช่นปี 400,800,1200,1600 และปี 2000 ที่เพิ่งผ่านมาเป็นต้น
#include <stdio.h>
int main(){
int i,day,month,year,check1=0,check2=0,check3=0;
char mstr;
printf("\t\tProgram check 'Leap year'.\n");
printf("\t\tInput 'dd mm yyyy' Only.\n");
printf("\t\tInput:");
scanf(" %d %d %d",&day,&month,&year);
check1=year%4;
check2=year%400;
check3=year%100;
if(month==2&&day>29){
printf("\t\tData fail.!!!\n");
}else{
if(month>0&&month<13&&day>0&&day<32){
switch(month){
case 1:printf("\tJanuary");
break;
case 2:printf("\tFabruary");
break;
case 3:printf("\tMarch");
break;
case 4:printf("\tApri");
break;
case 5:printf("\tMay");
break;
case 6:printf("\tJune");
break;
case 7:printf("\tJunly");
break;
case 8:printf("\tAgust");
break;
case 9:printf("\tSeptember");
break;
case 10:printf("\tOctober");
break;
case 11:printf("\tNovember");
break;
case 12:printf("\tDecember");
break;
}
if (check1==0){
if(check3!=0){
printf(" %d, %d and %d is a leap year.\n",day,year,year);
}else if(check3==0&&check2==0){
printf(" %d, %d and %d is a leap year.\n",day,year,year);
}else{
printf(" %d, %d and %d is not a leap year.\n",day,year,year);
}
}else{
printf(" %d, %d and %d is not a leap year.\n",day,year,year);
}
}else{
printf("\t\tData fail.!!!\n");
}
}
return 0;
}
ปล.อันนี้ลองไปทำกันดูครับ ถ้ามีโค๊ต อะไรที่น่าสนใจ หรือมีโจทย์มาถาม โพท์ต ถาม-ตอบกันได้เลยครับ...