#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MS 1000
char oneDigit[ ] [ 10 ] = { "Khong" , "Mot" , "Hai" , "Ba" , "Bon" , "Lam" , "Sau" , "Bay" , "Tam" , "Chin" } ;
char base[ ] [ 10 ] = { "" , "Muoi" , "Tram" , "Nghin" , "Muoi" , "Tram" , "Trieu" , "Muoi" , "Tram" , "Ty" } ;
char * d2w( char s[ ] ) {
if ( size == 0 )
return NULL;
for ( int i = 0 ; i < size; i++ )
s[ i] -= '0' ;
if ( size == 1 ) {
strcpy ( word
, oneDigit
[ ( int ) s
[ 0 ] ] ) ; return word;
}
for ( int i = 0 , j = size - 1 ; i < j; i++, j-- ) {
char t = s[ i] ;
s[ i] = s[ j] ;
s[ j] = t;
}
for ( int i = size - 1 ; i >= 0 ; i-- ) {
int k = i;
while ( k >= 10 ) {
k -= 9 ;
}
if ( ! strcmp ( oneDigit
[ ( int ) s
[ i
] ] , "Khong" ) && ! strcmp ( base
[ k
] , "Muoi" ) && s
[ i
- 1 ] != 0 ) else if ( ! strcmp ( oneDigit
[ ( int ) s
[ i
] ] , "Mot" ) && ! strcmp ( base
[ k
] , "Muoi" ) ) else if ( s
[ i
] != 0 || ( ! strcmp ( base
[ k
] , "Tram" ) && s
[ i
- 2 ] != 0 ) ) { strcat ( word
, oneDigit
[ ( int ) s
[ i
] ] ) ; } else if ( ( ( i
% 3 == 0 ) && ( s
[ i
+ 1 ] != 0 || s
[ i
+ 2 ] != 0 ) ) || ( ! strcmp ( base
[ k
- 6 ] , "Nghin" ) ) ) { }
}
return word;
}
int main( ) {
char s[ MS] ;
do {
for ( int i
= 0 ; i
< strlen ( s
) ; i
++ ) printf ( " in words is: %s\n " , d2w
( s
) ) ; printf ( "\n Do you want continue:\n " ) ; return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKI2RlZmluZSBNUyAxMDAwCgpjaGFyIG9uZURpZ2l0W11bMTBdID0geyJLaG9uZyIsICJNb3QiLCAiSGFpIiwgIkJhIiwgIkJvbiIsICJMYW0iLCAiU2F1IiwgIkJheSIsICJUYW0iLCAiQ2hpbiJ9OwpjaGFyIGJhc2VbXVsxMF0gPSB7IiIsICJNdW9pIiwgIlRyYW0iLCAiTmdoaW4iLCAiTXVvaSIsICJUcmFtIiwgIlRyaWV1IiwgIk11b2kiLCAiVHJhbSIsICJUeSJ9OwoKY2hhciAqZDJ3KGNoYXIgc1tdKSB7CgljaGFyICp3b3JkID0gY2FsbG9jKDEsIE1TKTsKCWludCBzaXplID0gc3RybGVuKHMpOwoJaWYgKHNpemUgPT0gMCkKCQlyZXR1cm4gTlVMTDsKCWZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQoJCXNbaV0gLT0gJzAnOwoJaWYgKHNpemUgPT0gMSkgewoJCXN0cmNweSh3b3JkLCBvbmVEaWdpdFsoaW50KXNbMF1dKTsKCQlyZXR1cm4gd29yZDsKCX0KCWZvciAoaW50IGkgPSAwLCBqID0gc2l6ZSAtIDE7IGkgPCBqOyBpKyssIGotLSkgewoJCWNoYXIgdCA9IHNbaV07CgkJc1tpXSA9IHNbal07CgkJc1tqXSA9IHQ7Cgl9Cglmb3IgKGludCBpID0gc2l6ZSAtIDE7IGkgPj0gMDsgaS0tKSB7CgkJaW50IGsgPSBpOwoJCXdoaWxlIChrID49IDEwKSB7CgkJCWsgLT0gOTsKCQl9CgkJaWYgKCFzdHJjbXAob25lRGlnaXRbKGludClzW2ldXSwgIktob25nIikgJiYgIXN0cmNtcChiYXNlW2tdLCAiTXVvaSIpICYmIHNbaSAtIDFdICE9IDApCgkJCXN0cmNhdCh3b3JkLCAiTGluaCAiKTsKCQllbHNlIGlmICghc3RyY21wKG9uZURpZ2l0WyhpbnQpc1tpXV0sICJNb3QiKSAmJiAhc3RyY21wKGJhc2Vba10sICJNdW9pIikpCgkJCXN0cmNhdCh3b3JkLCAiTXVvaSAiKTsKCQllbHNlIGlmIChzW2ldICE9IDAgfHwgKCFzdHJjbXAoYmFzZVtrXSwgIlRyYW0iKSAmJiBzW2kgLSAyXSAhPSAwKSkgewoJCQlzdHJjYXQod29yZCwgb25lRGlnaXRbKGludClzW2ldXSk7CgkJCXN0cmNhdCh3b3JkLCAiICIpOwoJCQlzdHJjYXQod29yZCwgYmFzZVtrXSk7CgkJCXN0cmNhdCh3b3JkLCAiICIpOwoJCX0gZWxzZSBpZiAoKChpICUgMyA9PSAwKSAmJiAoc1tpICsgMV0gIT0gMCB8fCBzW2kgKyAyXSAhPSAwKSkgfHwgKCFzdHJjbXAoYmFzZVtrIC0gNl0sICJOZ2hpbiIpKSkgewoJCQlzdHJjYXQod29yZCwgYmFzZVtrXSk7CgkJCXN0cmNhdCh3b3JkLCAiICIpOwoJCX0KCX0KCXJldHVybiB3b3JkOwp9CgppbnQgbWFpbigpIHsKCWNoYXIgc1tNU107CglkbyB7CgkJcHJpbnRmKCJFbnRlciBhbiBpbnRlZ2VyOiAiKTsKCQlzY2FuZigiJXMiLCBzKTsKCQl3aGlsZSAoZ2V0Y2hhcigpICE9ICdcbicpOwoJCWZvciAoaW50IGkgPSAwOyBpIDwgc3RybGVuKHMpOyBpKyspCgkJCXByaW50ZigiJWMiLCBzW2ldKTsKCQlwcmludGYoIiBpbiB3b3JkcyBpczogJXNcbiIsIGQydyhzKSk7CgkJcHJpbnRmKCJcbkRvIHlvdSB3YW50IGNvbnRpbnVlOlxuIik7CgkJcHJpbnRmKCIxLiBZZXNcbjAuIE5vXG4iKTsKCX0gd2hpbGUgKGdldGNoYXIoKSAhPSAnMCcpOwoJcmV0dXJuIDA7Cn0K