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

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

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

The viewer will learn how to clear a vector as well as how to detect empty vectors in C++.

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

Connect with top rated Experts

**6** Experts available now in Live!