Click here to Skip to main content
15,885,278 members
Please Sign up or sign in to vote.
2.33/5 (3 votes)
See more:
frndz i have code but it is upto 4 digits .i need it more than 4 digits.
example.
56789-fifty six thousand seven hundred and eighty nine.
the code could be fr 6 digits also.. plz/.......
please help me..the code should no exceed a lot..
Posted
Comments
D K N T H 6-Dec-11 23:59pm    
can show us your code?
TorstenH. 7-Dec-11 1:49am    
...You should at least know which language your teacher wants the coded homework in.
Jephunneh Malazarte 8-Dec-11 12:11pm    
careful on copying the answers, your teacher might have the copy of the codes from the said sites and waiting for you guys to jump in to its trap and end up not able to graduate. :)

if you have your code ready but only functional upto 4digit, you might as well share it to us and i'll review and do some corrections.

Here is one solution which was extracted from here :

http://www.daniweb.com/software-development/cpp/threads/20788[^]

C++
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *make_words(char *s, int ncomma);
char *insert_comma(long n, int *ncomma);
char *int2words(int n);
int a;

int main(void)
{



 printf("Enter number: ");
 scanf("%d",&a);
  printf("%d = %s\n",a,int2words(a));


  getch();
  return 0;
}

char *make_words(char *s, int ncomma)
{
  int i, len, rest = 0;
  char *p = NULL;
  static char zzz[256];

  static char *ones[] = {"one ","two ","three ","four ",
    "five ","six ","seven ","eight ","nine "};
  static char *tens[] = {"ten ","eleven ","twelve ","thirteen ",
    "fourteen ","fifteen ","sixteen ","seventeen ","eighteen ","nineteen "};
  static char *twenties[] = {"","twenty ","thirty ","forty ",
    "fifty ","sixty ","seventy ","eighty ","ninety "};
  static char *hundreds[] = {
    "hundred ","thousand ","million "};

  memset(zzz, '\0', 256);  // fill with nulls
  len = strlen(s);
  for(i = 0; i < len; i++)
  {

    if ((p = strchr((s[i] == ',') ? &s[++i] : &s[i], ',')) == NULL)
    {
      p = &s[strlen(s)];
    }
    if (s[i] == '0')
    {
      continue;  // skip one iteration
    }
    if ((rest = (p - &s[i])) != 0)
    {
      if (rest == 3)
      {
        strcat(zzz, ones[s[i] - '0' - 1]);
        strcat(zzz, hundreds[0]);

        if (len == 7 && s[2] == '0')  strcat(zzz, hundreds[1]);
        if (len == 11 && s[2] == '0')  strcat(zzz, hundreds[2]);
      }
      else if (rest == 2)
      {
        if (s[i] == '1')
        {
          strcat(zzz, tens[s[++i] - '0']);
          rest--;
        }
        else
        {
          strcat(zzz, twenties[s[i] - '0' - 1]);
        }
      }
      else
        strcat(zzz, ones[s[i] - '0' - 1]);
    }
    if (rest == 1 && ncomma != 0)
    {
      strcat(zzz, hundreds[ncomma--]);
    }
  }
  return zzz;
}


char *insert_comma(long n, int *ncomma)
{
  static char zzz[30];
  int i = 0;
  char *p = &zzz[sizeof(zzz)-1];

  *p = '\0';
  *ncomma = 0;
  do
  {
    if (i % 3 == 0 && i != 0)
    {
      *--p = ',';
      ++*ncomma;
    }
     *--p = (char)('0' + n % 10);
    n /= 10;
    i++;
  } while(n != 0);
  return p;
}

char *int2words(int n)
{
  int nc;
  char *ps, *zzz, *minus;
  char *buffer;
  buffer = (char *) malloc(256);

  // save any - sign
  if (n < 0)
  {
    minus = "minus";
    n = abs(n);
  }
  else
  {
    minus = "";
  }

  ps = insert_comma(n, &nc);

  zzz = make_words(ps, nc);

  sprintf(buffer,"%s %s", minus, zzz);

  return buffer;
  getch();
}
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900