Skip to main content

ISC Program: Predict day of the week from date

Algorithm:
1)Take the last two digits of the year.
2)Divide by 4, discarding any fraction.
3)Add the day of the month.
4)Add the month's key value: JFM AMJ JAS OND 144 025 036 146
5)Subtract 1 for January or February of a leap year.
6)For a Gregorian date, add 0 for 1900's, 6 for 2000's, 4 for 1700's, 2 for 1800's; for other years, add or subtract multiples of 400.
7)For a Julian date, add 1 for 1700's, and 1 for every additional century you go back.
8)Add the last two digits of the year.
9)Divide by 7 and take the remainder.

Example:

Let's take a date: 26/03/2027
Last two digit of the year = 27
Divide by 4 discard fraction = 27/4 = 6.75 = 6
Add day = 6 + 26 = 32
Month key = 4 + 32 = 36
Add year code = 36 + 6 = 42
Now add two digits of the first year = 42 + 27 = 69
Now get the remainder after dividing by 7 = 69%7=6
So 1 is Sunday
so 6 is Friday
So 27/03/2027

Program:
import java.util.Scanner;
public class daydate {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Enter the year: ");
        int year = sc.nextInt();
        System.out.print("Enter the month (1-12): ");
        int month = sc.nextInt();
        System.out.print("Enter the day of the month: ");
        int day = sc.nextInt();
        int lastTwoDigitsOfYear = year % 100;
        int step1 = lastTwoDigitsOfYear / 4;
        int step2 = step1 + day;
        int monthKeyValue = 0;
        switch (month) {
            case 1: // January
                monthKeyValue = 1;
                break;
            case 2: // February
                monthKeyValue = 4;
                break;
            case 3: // March
                monthKeyValue = 4;
                break;
            case 4: // April
                monthKeyValue = 0;
                break;
            case 5: // May
                monthKeyValue = 2;
                break;
            case 6: // June
                monthKeyValue = 5;
                break;
            case 7: // July
                monthKeyValue = 0;
                break;
            case 8: // August
                monthKeyValue = 3;
                break;
            case 9: // September
                monthKeyValue = 6;
                break;
            case 10: // October
                monthKeyValue = 1;
                break;
            case 11: // November
                monthKeyValue = 4;
                break;
            case 12: // December
                monthKeyValue = 6;
                break;
        }

        int step3 = step2 + monthKeyValue;

        // Leap year adjustment
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { // Check for leap year
            if (month == 1 || month == 2) {
                step3--;
            }
        }

        // Gregorian Calendar Year Adjustment
        int yearAdjustment = 0;
        if (year >= 1700 && year < 1800) {
            yearAdjustment = 4;
        } else if (year >= 1800 && year < 1900) {
            yearAdjustment = 2;
        } else if (year >= 1900 && year < 2000) {
            yearAdjustment = 0;
        } else if (year >= 2000 && year < 2100) {
            yearAdjustment = 6;
        } else {
            int century = year / 100;
            yearAdjustment = (6 - 2 * (century % 4)) % 7;
            if (yearAdjustment < 0) yearAdjustment += 7; // Ensure positive value
        }
        step3 += yearAdjustment;
        int step4 = step3 + lastTwoDigitsOfYear;
        int dayOfWeek = step4 % 7;
        String[] dayNames = {"Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"}; //0 is Saturday as per the algorithm

        System.out.println("The day of the week is: " + dayNames[dayOfWeek]);
        sc.close();
    }
}

Popular posts from this blog

Panagram ISC 2025 Specimen Practical Paper

import java.util.*; class panagram //ISC 2025 Practical Question {     //str for storing the sentence     String str;     panagram()     {         str="";     }     void accept()     {         Scanner sc=new Scanner(System.in);         System.out.println("Enter a sentence:");         str=sc.nextLine();     }     void panagramcheck()     {         int letters[]=new int[26];          StringTokenizer st=new StringTokenizer(str);         while(st.hasMoreTokens())         {             String w = st.nextToken().toUpperCase();             for(int i=65;i<=90;i++)             {                 for(int j=...

Program in Java: ISC Program CellPhone Keystrokes

import java.util.Scanner; public class Keypad {     public static void main(String args[])     {         //Array to hold keystrokes for each letter         int keys[] = new int[26];         //intialise         keys['A'-'A']=1; //A         keys['B'-'A']=2; //B         keys['C'-'A']=3; //C         keys['D'-'A']=1; //D         keys['E'-'A']=2; //E         keys['F'-'A']=3; //F         keys['G'-'A']=1; //G         keys['H'-'A']=2; //H         keys['I'-'A']=3; //I         keys['J'-'A']=1; //J         keys['K'-'A']=2; //K         keys['L'-'A']=3; //L         keys['M'-'A']=1; //M         keys['N'-'A']=2; //N       ...