#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/* A function that prints given number in words */
void convert_to_words(char *num)
{
int len = strlen(num); // Get number of digits in given number
char *single_digits[] = { "zero", "one", "two", "three", "four",
"five", "six", "seven", "eight", "nine"};
char *two_digits[] = {"", "ten", "eleven", "twelve", "thirteen", "fourteen",
"fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
char *tens_multiple[] = {"", "", "twenty", "thirty", "forty", "fifty",
"sixty", "seventy", "eighty", "ninety"};
char *tens_power[] = {"hundred", "thousand"};
/* Used for debugging purpose only */
printf("\n%s: ", num);
/* For single digit number */
if (len == 1) {
printf("%s\n", single_digits[*num - '0']);
return;
}
/* Iterate while num is not '\0' */
while (*num != '\0') {
/* Code path for first 2 digits */
if (len >= 3) {
if (*num -'0' != 0) {
printf("%s ", single_digits[*num - '0']);
printf("%s ", tens_power[len-3]); // here len can be 3 or 4
}
--len;
}
/* Code path for last 2 digits */
else {
/* Need to explicitly handle 10-19. Sum of the two digits is
used as index of "two_digits" array of strings */
if (*num == '1') {
int sum = *num - '0' + *(num + 1)- '0';
printf("%s\n", two_digits[sum]);
return;
}
/* Need to explicitely handle 20 */
else if (*num == '2' && *(num + 1) == '0') {
printf("twenty\n");
return;
}
/* Rest of the two digit numbers i.e., 21 to 99 */
else {
int i = *num - '0';
printf("%s ", i? tens_multiple[i]: "");
++num;
if (*num != '0')
printf("%s ", single_digits[*num - '0']);
}
}
++num;
}
}
int main(void)
{
convert_to_words("9923");
convert_to_words("523");
convert_to_words("89");
convert_to_words("8989");
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgogCi8qIEEgZnVuY3Rpb24gdGhhdCBwcmludHMgZ2l2ZW4gbnVtYmVyIGluIHdvcmRzICovCnZvaWQgY29udmVydF90b193b3JkcyhjaGFyICpudW0pCnsKICAgIGludCBsZW4gPSBzdHJsZW4obnVtKTsgIC8vIEdldCBudW1iZXIgb2YgZGlnaXRzIGluIGdpdmVuIG51bWJlcgogCiAgICBjaGFyICpzaW5nbGVfZGlnaXRzW10gPSB7ICJ6ZXJvIiwgIm9uZSIsICJ0d28iLCAidGhyZWUiLCAiZm91ciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaXZlIiwgInNpeCIsICJzZXZlbiIsICJlaWdodCIsICJuaW5lIn07CiAKICAgIGNoYXIgKnR3b19kaWdpdHNbXSA9IHsiIiwgInRlbiIsICJlbGV2ZW4iLCAidHdlbHZlIiwgInRoaXJ0ZWVuIiwgImZvdXJ0ZWVuIiwKICAgICAgICAgICAgICAgICAgICAgImZpZnRlZW4iLCAic2l4dGVlbiIsICJzZXZlbnRlZW4iLCAiZWlnaHRlZW4iLCAibmluZXRlZW4ifTsKIAogICAgY2hhciAqdGVuc19tdWx0aXBsZVtdID0geyIiLCAiIiwgInR3ZW50eSIsICJ0aGlydHkiLCAiZm9ydHkiLCAiZmlmdHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaXh0eSIsICJzZXZlbnR5IiwgImVpZ2h0eSIsICJuaW5ldHkifTsKIAogICAgY2hhciAqdGVuc19wb3dlcltdID0geyJodW5kcmVkIiwgInRob3VzYW5kIn07CiAKICAgIC8qIFVzZWQgZm9yIGRlYnVnZ2luZyBwdXJwb3NlIG9ubHkgKi8KICAgIHByaW50ZigiXG4lczogIiwgbnVtKTsKIAogICAgLyogRm9yIHNpbmdsZSBkaWdpdCBudW1iZXIgKi8KICAgIGlmIChsZW4gPT0gMSkgewogICAgICAgIHByaW50ZigiJXNcbiIsIHNpbmdsZV9kaWdpdHNbKm51bSAtICcwJ10pOwogICAgICAgIHJldHVybjsKICAgIH0KIAogICAgIC8qIEl0ZXJhdGUgd2hpbGUgbnVtIGlzIG5vdCAnXDAnICovCiAgICAgd2hpbGUgKCpudW0gIT0gJ1wwJykgewogCiAgICAgICAgLyogQ29kZSBwYXRoIGZvciBmaXJzdCAyIGRpZ2l0cyAqLwogICAgICAgIGlmIChsZW4gPj0gMykgewogICAgICAgICAgICBpZiAoKm51bSAtJzAnICE9IDApIHsKICAgICAgICAgICAgICAgIHByaW50ZigiJXMgIiwgc2luZ2xlX2RpZ2l0c1sqbnVtIC0gJzAnXSk7CiAgICAgICAgICAgICAgICBwcmludGYoIiVzICIsIHRlbnNfcG93ZXJbbGVuLTNdKTsgLy8gaGVyZSBsZW4gY2FuIGJlIDMgb3IgNAogICAgICAgICAgICB9CiAgICAgICAgICAgIC0tbGVuOwogICAgICAgIH0KIAogICAgICAgIC8qIENvZGUgcGF0aCBmb3IgbGFzdCAyIGRpZ2l0cyAqLwogICAgICAgIGVsc2UgewogICAgICAgICAgICAvKiBOZWVkIHRvIGV4cGxpY2l0bHkgaGFuZGxlIDEwLTE5LiBTdW0gb2YgdGhlIHR3byBkaWdpdHMgaXMKICAgICAgICAgICAgICAgdXNlZCBhcyBpbmRleCBvZiAidHdvX2RpZ2l0cyIgYXJyYXkgb2Ygc3RyaW5ncyAqLwogICAgICAgICAgICBpZiAoKm51bSA9PSAnMScpIHsKICAgICAgICAgICAgICAgIGludCBzdW0gPSAqbnVtIC0gJzAnICsgKihudW0gKyAxKS0gJzAnOwogICAgICAgICAgICAgICAgcHJpbnRmKCIlc1xuIiwgdHdvX2RpZ2l0c1tzdW1dKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogCiAgICAgICAgICAgIC8qIE5lZWQgdG8gZXhwbGljaXRlbHkgaGFuZGxlIDIwICovCiAgICAgICAgICAgIGVsc2UgaWYgKCpudW0gPT0gJzInICYmICoobnVtICsgMSkgPT0gJzAnKSB7CiAgICAgICAgICAgICAgICBwcmludGYoInR3ZW50eVxuIik7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KIAogICAgICAgICAgICAvKiBSZXN0IG9mIHRoZSB0d28gZGlnaXQgbnVtYmVycyBpLmUuLCAyMSB0byA5OSAqLwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGludCBpID0gKm51bSAtICcwJzsKICAgICAgICAgICAgICAgIHByaW50ZigiJXMgIiwgaT8gdGVuc19tdWx0aXBsZVtpXTogIiIpOwogICAgICAgICAgICAgICAgKytudW07CiAgICAgICAgICAgICAgICBpZiAoKm51bSAhPSAnMCcpCiAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIlcyAiLCBzaW5nbGVfZGlnaXRzWypudW0gLSAnMCddKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICArK251bTsKICAgIH0KfQppbnQgbWFpbih2b2lkKQp7CiAgICBjb252ZXJ0X3RvX3dvcmRzKCI5OTIzIik7CiAgICBjb252ZXJ0X3RvX3dvcmRzKCI1MjMiKTsKICAgIGNvbnZlcnRfdG9fd29yZHMoIjg5Iik7CiAgICBjb252ZXJ0X3RvX3dvcmRzKCI4OTg5Iik7CiAKICAgIHJldHVybiAwOwp9
Main.java:1: error: illegal character: '#'
#include <stdio.h>
^
Main.java:1: error: class, interface, or enum expected
#include <stdio.h>
^
Main.java:2: error: illegal character: '#'
#include <string.h>
^
Main.java:3: error: illegal character: '#'
#include <stdlib.h>
^
Main.java:10: error: class, interface, or enum expected
char *single_digits[] = { "zero", "one", "two", "three", "four",
^
Main.java:13: error: class, interface, or enum expected
char *two_digits[] = {"", "ten", "eleven", "twelve", "thirteen", "fourteen",
^
Main.java:16: error: class, interface, or enum expected
char *tens_multiple[] = {"", "", "twenty", "thirty", "forty", "fifty",
^
Main.java:19: error: class, interface, or enum expected
char *tens_power[] = {"hundred", "thousand"};
^
Main.java:22: error: class, interface, or enum expected
printf("\n%s: ", num);
^
Main.java:25: error: class, interface, or enum expected
if (len == 1) {
^
Main.java:27: error: class, interface, or enum expected
return;
^
Main.java:28: error: class, interface, or enum expected
}
^
Main.java:37: error: class, interface, or enum expected
printf("%s ", tens_power[len-3]); // here len can be 3 or 4
^
Main.java:38: error: class, interface, or enum expected
}
^
Main.java:40: error: class, interface, or enum expected
}
^
Main.java:48: error: class, interface, or enum expected
printf("%s\n", two_digits[sum]);
^
Main.java:49: error: class, interface, or enum expected
return;
^
Main.java:50: error: class, interface, or enum expected
}
^
Main.java:55: error: class, interface, or enum expected
return;
^
Main.java:56: error: class, interface, or enum expected
}
^
Main.java:61: error: class, interface, or enum expected
printf("%s ", i? tens_multiple[i]: "");
^
Main.java:62: error: class, interface, or enum expected
++num;
^
Main.java:63: error: class, interface, or enum expected
if (*num != '0')
^
Main.java:65: error: class, interface, or enum expected
}
^
Main.java:68: error: class, interface, or enum expected
}
^
Main.java:73: error: class, interface, or enum expected
convert_to_words("523");
^
Main.java:74: error: class, interface, or enum expected
convert_to_words("89");
^
Main.java:75: error: class, interface, or enum expected
convert_to_words("8989");
^
Main.java:77: error: class, interface, or enum expected
return 0;
^
Main.java:78: error: class, interface, or enum expected
}
^
30 errors