# Pascal calculate day of week with given inputday

Hello everyone!

I need to create a Program which first reads in DD/MM/YYYY as Integer. (I already got that working.)
Then, I need to do a sanity check for the date.
(I managed to do that as well.)

But one problem remains:
I need to enter the day of the week of the 1st of January for a year, e.g. Monday and based on that, the program should calculate the correct weekday for the inputted date.
Are there any functions I could use for this?

Any help would be kindly appreciated!

## Comments

• Here it is, but I did it for 2012 year, to do it for every year you need to add some conditions, maybe later I'll try to do it.
• This post has been deleted.
• This post has been deleted.
• This post has been deleted.
• Here it is, but I did it for 2012 year, to do it for every year you need to add some conditions, maybe later I'll try to do it.

Program weekday;
const
a1=[01,08,15,22,29]; {e.g. if 01 is Monday then 08,15.. are Mondays too}
a2=[02,09,16,23,30];
a3=[03,10,17,24,31];
a4=[04,11,18,25];
a5=[05,12,19,26];
a6=[06,13,20,27];
a7=[07,14,22,28];
Var x, d,m,y:integer; w:array[1..7] of string;

Begin
w[1]:='Sunday';
w[2]:='Monday';
w[3]:='Tuesday';
w[4]:='Wednesday';
w[5]:='Thursday';
w[6]:='Friday';
w[7]:='Saturday';
writeln('Enter current date DD MM YYYY');
read(d,m,y);
if y=2012 then

begin
write('It''s ');
if d in a1 then x:=0;
if d in a2 then x:=1;
if d in a3 then x:=2;
if d in a4 then x:=3;
if d in a5 then x:=4;
if d in a6 then x:=5;
if d in a7 then x:=6;

begin
if (m=01) or (m=04) or (m=07) then writeln(w [1+( x mod 7)] );{To each month we define day of a week depending on group in which it is(a1,a2...,a7)}
if (m=02) or (m=08) then writeln(w [1+( (3+x) mod 7)] );{substituting x we get necessary w[...], so get necessary weekday}
if (m=03) or (m=11) then writeln(w [1+( (4+x) mod 7)] );
if (m=05) then writeln(w [1+( (2+x) mod 7)] );
if (m=06) then writeln(w [1+( (5+x) mod 7)] );
if (m=09) or (m=12) then writeln(w [1+( (6+x) mod 7)] );
if (m=10) then writeln(w [1+( (1+x) mod 7)] );
end;

end else writeln('No info about this year');

end.
• Thank you very much for your help!
I'll edit the code further for several years that I need.

Thanks again!
Sign In or Register to comment.

#### Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!