I don't know what that
5-steps Engineering Problem Solving Methodology is that is mentioned here, or at least not by that name (probably I know quite a few more steps ;)). Anyway, I think that is what you should be starting with!
...
Now, if you still don't know where to start, here's what I would do:
Clarification of the requirements
If this were a real world assignment, the first thing I'd do is go to the client and clarify some ambiguities, such as what exactly is meant to be the input, output, and user interaction mentioned in the very last sentence (and never before, except for the message in case of an invalid date). Of course, with a bit of common sense, you can fill in those blanks, but my experience tells me that what
*you* think is obvious, and what a client thinks, are often quite different ;)
Now, this being a homework task, we'll assume it's far from reality and therefore it's safe to assume that common sense will be sufficient, i. e.
1. the input is to be a string, representing a date, and the expected format is 'DD MM YYYY'.
2. the output is supposed to consist of the results you generated from that input
3. the term 'interaction' indicates the user will be able to control the program in some way, and that usually implies a bit more than starting and responding. This part is rather vague, but two trivial operations come to mind:
a) correcting input, i. e. if your program recognizes the format of the date, or the date itself to be inappropriate, the user gets the opportunity to correct it (i. e. reenter the date)
b) repeat the operation, i. e. you let the user reenter another date
Since both operations are pretty much the same, it's probably a good idea to just put a loop around your main I/O and processing, and you need to provide a way for the user to exit the program.
Create a rough prototype
Now you have a simple layout for your program:
bool one_more_try = true;
do {
input();
if (valid_input()) {
process_results();
output();
}
one_more_try = query_repeat();
} while (one_more_try);
Delegate the hard work (to students as homework ;p)
Of course, you need to declare and implement the individual functions used here, add function arguments and return values as needed, add comments and maybe add some initialization and clean up code (although I don't see anything here, it's always a good idea to at least check such things: I usually at least add a temporary TODO comment, in case I think of something later)