Find the last Sunday of each month: Difference between revisions

Line 267:
Press any key to continue...
</lang>
 
=={{header|Java}}==
<lang java>
package rosettacode;
 
import java.util.Scanner;
 
public class LastSunday
{
public LastSunday()
{
months=new String[]{"January","February","March","April","May","June","July","August","September","October","November","December"};
lastDay=new int[12];
}
int lastDay[], year;
String months[];
boolean isLeap;
public void findLastSunday(int y)
{
year=y;
isLeapYear();
int days[]={31,isLeap?29:28,31,30,31,30,31,31,30,31,30,31};
int d;
for(int i=0;i<12;i++)
{
d=days[i];
while(true)
{
if(getWeekDay(i,d)==0)
break;
d--;
}
lastDay[i]=d;
}
display();
}
private void isLeapYear()
{
isLeap=false;
if(year%4==0)
{
if(year%100!=0)
isLeap=true;
else if (year%400==0)
isLeap=true;
}
}
private void display()
{
System.out.println("\nYEAR: "+year);
for(int i=0;i<12;i++)
System.out.println(months[i]+": "+lastDay[i]);
}
private int getWeekDay(int m, int d)
{
int y=year;
int f=y+d+3*m-1;
m++;
if(m<3)
y--;
else
f-=(int)(0.4*m+2.3);
f+=(int)(y/4)-(int)((y/100+1)*0.75);
f%=7;
return f;
}
public static void main(String[] args) throws Exception
{
int y;
LastSunday now=new LastSunday();
System.out.print("Enter year: ");
Scanner s=new Scanner(System.in);
y=Integer.parseInt(s.next());
now.findLastSunday(y);
s.close();
}
}
</lang>
 
Output:
<pre>
Enter year: 2013
 
YEAR: 2013
January: 27
February: 24
March: 31
April: 28
May: 26
June: 30
July: 28
August: 25
September: 29
October: 27
November: 24
December: 29
</pre>
 
 
=={{header|Mathematica}}==
<lang mathematica>LastSundays[year_] :=
Anonymous user