[c] Calander

Viewer

copydownloadembedprintName: Calander
  1. #include <stdio.h>
  2.  
  3. // Function to check if a given year is a leap year
  4. int isLeapYear(int year) {
  5.     return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
  6. }
  7.  
  8. // Function to get the number of days in a given month
  9. int daysInMonth(int month, int year) {
  10.     int days[] = {31, 28 + isLeapYear(year), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  11.     return days[month - 1];
  12. }
  13.  
  14. // Function to get the day of the week for a given date using Zeller's Congruence algorithm
  15. int getDayOfWeek(int day, int month, int year) {
  16.     if (month < 3) {
  17.         month += 12;
  18.         year--;
  19.     }
  20.     int K = year % 100;
  21.     int J = year / 100;
  22.     int h = (day + 13 * (month + 1) / 5 + K + K / 4 + J / 4 + 5 * J) % 7;
  23.     return (+ 5) % 7; // 0 for Saturday, 1 for Sunday, ..., 6 for Friday
  24. }
  25.  
  26. // Function to count the number of Fridays in a given year
  27. int countFridays(int year) {
  28.     int count = 0;
  29.     for (int month = 1; month <= 12; month++) {
  30.         for (int day = 1; day <= daysInMonth(month, year); day++) {
  31.             if (getDayOfWeek(day, month, year) == 6) { // Friday is represented as 6
  32.                 count++;
  33.             }
  34.         }
  35.     }
  36.     return count;
  37. }
  38.  
  39. // Function to print the calendar for a given year
  40. void printCalendar(int year) {
  41.     printf("Calendar for %d:\n", year);
  42.     for (int month = 1; month <= 12; month++) {
  43.         printf("\n\n%s\n", (month == 1) ? "January" : (month == 2) ? "February" : (month == 3) ? "March" : (month == 4) ? "April" : (month == 5) ? "May" : (month == 6) ? "June" : (month == 7) ? "July" : (month == 8) ? "August" : (month == 9) ? "September" : (month == 10) ? "October" : (month == 11) ? "November" : "December");
  44.         printf("Sun Mon Tue Wed Thu Fri Sat\n");
  45.         int startingDay = getDayOfWeek(1, month, year);
  46.         for (int i = 0; i < startingDay; i++) {
  47.             printf("    ");
  48.         }
  49.         for (int day = 1; day <= daysInMonth(month, year); day++) {
  50.             printf("%3d ", day);
  51.             startingDay++;
  52.             if (startingDay > 6) {
  53.                 printf("\n");
  54.                 startingDay = 0;
  55.             }
  56.         }
  57.         printf("\n");
  58.     }
  59. }
  60.  
  61. // Main function
  62. int main() {
  63.     int year;
  64.     printf("Enter the year: ");
  65.     scanf("%d", &year);
  66.  
  67.     printCalendar(year);
  68.  
  69.     int fridays = countFridays(year);
  70.     printf("\nNumber of Fridays in %d: %d\n", year, fridays);
  71.  
  72.     return 0;
  73. }
  74.  

Editor

You can edit this paste and save as new:


File Description
  • Calander
  • Paste Code
  • 27 Apr-2024
  • 2.4 Kb
You can Share it: