PDA

View Full Version : Anyone knows Ocaml???


neelu09
09-08-2008, 03:22 PM
i need some help with ocaml programm...can anyone help
i have to write a programme which will tell whther a date is valid or not
i have written
let datevalid : int*string -> bool = function
(d,m) -> if (d>31 || d<1 || m<>"January"||m<>"February"||m<>"March"||m<>"April"||m<>"May"||m<>"June"||m<>"July"||m<>"August"||m<>"September"||m<>"October"||m<>"November"||m<>"December") then false
else if (d>28 && m="February") then false
else if (d=31 && (m<>"January"||m<>"March"||m<>"May"||m<>"July"||m<>"August"||m<>"October"||m<>"December")) then false
else true
;;


but this function gives false for valid dates also please help

chandru.in
11-08-2008, 11:20 AM
I have never worked on Ocaml. But I guess || stands for "or" and && stands for "and" in it just like other C-like languages. If that is true you have an error in your logic.

Try this code instead.

let datevalid : int*string -> bool = function
(d,m) -> if ((d>31 || d<1) || (m<>"January"&&m<>"February"&&m<>"March"&&m<>"April "&&m<>"May"&&m<>"June"&&m<>"July"&&m<>"August"&&m< >"September"&&m<>"October"&&m<>"November"&&m<>"December")) then false
else if (d>28 && m="February") then false
else if (d=31 && m<>"January" && m <> "March" && m <>"May" && m<>"July" && m <>"August" && m<>"October" && m<>"December") then false
else true
;;

Note: You are also not considering leap years when checking for February.

neelu09
14-08-2008, 11:46 AM
nah it still says syntax error...anyway thanks for reply....

chandru.in
14-08-2008, 12:28 PM
nah it still says syntax error...anyway thanks for reply....
As I said, "I have never worked on Ocaml". So syntax errors are possible.

I just gave the corrected logic.