Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Solved

Posted on 2002-03-22

Hey guys, I am writing a program that will accept a date in the MM/DD/YYYY format and return it in written english...EX: March Fifth, Two Thousand Two

I have the program working from 1990 through now, including filtering out erroneous dates...such as the 29th of February on a non-leap year. So far I have been converting everything through a CASE SWITCH statement

EX: CASE 1990: return "nineteen-ninety";

Here's the problem...I want this program to perform this function at least back to 1900...or earlier would be better. I cannot figure out a way to write these year statements without typing out every single year that I want to have available. What would be a good way of going about this?

Thanks in advance,

Jeff

I have the program working from 1990 through now, including filtering out erroneous dates...such as the 29th of February on a non-leap year. So far I have been converting everything through a CASE SWITCH statement

EX: CASE 1990: return "nineteen-ninety";

Here's the problem...I want this program to perform this function at least back to 1900...or earlier would be better. I cannot figure out a way to write these year statements without typing out every single year that I want to have available. What would be a good way of going about this?

Thanks in advance,

Jeff

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

- Help others & share knowledge
- Earn cash & points
- Learn & ask questions

4 Comments

Then use a dual algrithm to come up with the numbers from 20 to 99

1: one

2: two, twen (<- twenty)

3: three, thir (<- thirteen, thirty)

4: four, for (<-forty)

5: five, fif (<-fifty, fifteen)

6: six

7: seven,

8: eight, eigh (<- eighty, eighteen)

9: nine

10: ten

1000: thousand

10+a (2<a<10): teen

10*a (1<a<10): ty

The parathesis with <- is/are the cases where the "root" is used.

Next, define some constant strings for the following exceptional cases:

00: hundred

11: eleven

12: twelve

Then you need to define some rules (where y=input year, and the content inside parenthesis is just for human explanation only, not for coding):

==========================

Case A)

y/100==19 (=> 9 + 10)

=> "nine" + "teen"; n=y-1900;

n==0 (=> 00)

=> "-hundred"

0<n<13 => + "-and-" + (direct translation of n)

13<=n<=19 => "-" + (translation of n-10) + (direct translation of (10+a))

2<=n<=9 && n%10==0 => "-" + (translation of n/10) + (direct translation of (10*a))

2<=n<=9 && n%10!=0 => "-" + (translation of n/10) + (direct translation of (10*a)) + "-" + (direct translation of n%10)

==========================

Case B)

y>=2000 (=> 2 * 1000)

=> "two" + "-" + "thosand" + "-" + "and-"; n=y-2000;

0<n<13 => + (direct translation of n)

13<=n<=19 => (translation of n-10) + (direct translation of (10+a))

2<=n<=9 && n%10==0 => (translation of n/10) + (direct translation of (10*a))

2<=n<=9 && n%10!=0 => (translation of n/10) + (direct translation of (10*a)) + "-" + (direct translation of n%10)

==========================

This is just a pseudocode. You need to translate to

C++ using conditionals.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Course of the Month12 days, 4 hours left to enroll

Join the community of 500,000 technology professionals and ask your questions.