<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7612109661116230968</id><updated>2011-04-21T20:04:38.688-07:00</updated><title type='text'>Number to spoken string</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://num2spokenstring.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7612109661116230968/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://num2spokenstring.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mastishka</name><uri>http://www.blogger.com/profile/03787642406452947142</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7612109661116230968.post-1126953528534332396</id><published>2008-12-10T05:17:00.000-08:00</published><updated>2008-12-11T01:10:05.607-08:00</updated><title type='text'>C++ Program to convert number to spoken string</title><content type='html'>[Divide and Conquer Approach]&lt;br /&gt;1). int varies from -2147483648 to +2147483647&lt;br /&gt;&lt;br /&gt;2). e.g. 2,147,483,648 : 4 groups of three (out of which one group will contain only one digit)&lt;br /&gt;&lt;br /&gt;3). Once we break the number in groups we can then represent it in, [w billion x million y thousand z], where billion, million and thousand are prepositions.&lt;br /&gt;&lt;br /&gt;4). Each group will contain max upto 3 digits&lt;br /&gt;&lt;br /&gt;5). Having basic knowledge of number to word will help us.&lt;br /&gt;e.g. digit[0] = "zero";&lt;br /&gt;digit[1] = "one";&lt;br /&gt;digit[2] = "two"; and so on...&lt;br /&gt;&lt;br /&gt;6). Preposition will help us merging back the solution.&lt;br /&gt;e.g.&lt;br /&gt;places[2] = "thousand";&lt;br /&gt;places[3] = "million";&lt;br /&gt;places[4] = "billion";&lt;br /&gt;&lt;br /&gt;7). Go through the code for details :)&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;  &lt;br /&gt;#include &amp;lt;string&amp;gt;&lt;br /&gt;#include &amp;lt;vector&amp;gt;&lt;br /&gt;#include &amp;lt;map&amp;gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;#include &amp;lt;math.h&amp;gt;&lt;br /&gt;&lt;br /&gt;string numberToSpokenFormString(int n) {&lt;br /&gt; // assuming int is 4 byte&lt;br /&gt; &lt;br /&gt; map&amp;lt;int,string&amp;gt; digit;&lt;br /&gt; map&amp;lt;int,string&amp;gt; places;&lt;br /&gt;&lt;br /&gt; digit[0] = "zero";&lt;br /&gt; digit[1] = "one";&lt;br /&gt; digit[2] = "two";&lt;br /&gt; digit[3] = "three";&lt;br /&gt; digit[4] = "four";&lt;br /&gt; digit[5] = "five";&lt;br /&gt; digit[6] = "six";&lt;br /&gt; digit[7] = "seven";&lt;br /&gt; digit[8] = "eight";&lt;br /&gt; digit[9] = "nine";&lt;br /&gt; digit[10] = "ten";&lt;br /&gt; digit[11] = "eleven";&lt;br /&gt; digit[12] = "twelve";&lt;br /&gt; digit[13] = "thirteen";&lt;br /&gt; digit[14] = "fourteen";&lt;br /&gt; digit[15] = "fifteen";&lt;br /&gt; digit[16] = "sixteen";&lt;br /&gt; digit[17] = "seventeen";&lt;br /&gt; digit[18] = "eighteen";&lt;br /&gt; digit[19] = "nineteen";&lt;br /&gt; digit[20] = "twenty";&lt;br /&gt; digit[30] = "thirty";&lt;br /&gt; digit[40] = "fourty";&lt;br /&gt; digit[50] = "fifty";&lt;br /&gt; digit[60] = "sixty";&lt;br /&gt; digit[70] = "seventy";&lt;br /&gt; digit[80] = "eighty";&lt;br /&gt; digit[90] = "ninety";&lt;br /&gt; digit[100] = "hundred";&lt;br /&gt; &lt;br /&gt; places[2] = "thousand";&lt;br /&gt; places[3] = "million";&lt;br /&gt; places[4] = "billion";&lt;br /&gt; &lt;br /&gt; string str = "";&lt;br /&gt; int nNumOfDigits = 1;&lt;br /&gt; int nPairs = 1;&lt;br /&gt; &lt;br /&gt; if(n &amp;lt; 0)&lt;br /&gt; {&lt;br /&gt;  n = abs(n);&lt;br /&gt;  str += "minus ";&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; if(n == 0)&lt;br /&gt; {&lt;br /&gt;  str = digit[0] ;&lt;br /&gt; }&lt;br /&gt; else&lt;br /&gt; {&lt;br /&gt;  // [Number of digits in the integer]&lt;br /&gt;  // For example log10 of number 34250000 is [ 7 + log10(3.425) ] = 7.xxxxxxx&lt;br /&gt;  // take only integer part and you will have 7. Add 1 to it and number of digits = 8&lt;br /&gt;&lt;br /&gt;  nNumOfDigits = (int)(log10((double)n))+1; &lt;br /&gt;  &lt;br /&gt;  // [Groups of three]&lt;br /&gt;  // int varies between -2147483648 to +2147483647&lt;br /&gt;  // 2,147,483,648 : 4 groups of three (out of which one group will contain only one digit)&lt;br /&gt;  // once we break the number in groups we can then represent it in,&lt;br /&gt;  // w billion x million y thousand z, where billion, million and thousand are preposition.&lt;br /&gt;  // [Divide and Conquer approch]&lt;br /&gt;   &lt;br /&gt;  nPairs = ceil(((double)nNumOfDigits/3));  &lt;br /&gt; &lt;br /&gt;  int temp, num;&lt;br /&gt;  for(int i = 0; i &amp;lt;= nPairs; i++) // Complexity O(n), n: number of digits.&lt;br /&gt;  {&lt;br /&gt;   num = n/(int)pow((double)1000, (double)nPairs-i);&lt;br /&gt;   &lt;br /&gt;   for(int j = 100; j &amp;gt;= 1; j=j/10)&lt;br /&gt;   {&lt;br /&gt;    temp = num / j;&lt;br /&gt;    if(temp != 0)&lt;br /&gt;    {&lt;br /&gt;     if(j == 100)&lt;br /&gt;     {&lt;br /&gt;      str += digit[temp] + " " + digit[j] + " " ;&lt;br /&gt;     }&lt;br /&gt;     else if(j == 10)&lt;br /&gt;     {&lt;br /&gt;      if(num &lt;= 20) // Check if number is less than or equal to 20&lt;br /&gt;      {&lt;br /&gt;       str += digit[num]+ " " ;&lt;br /&gt;       break;&lt;br /&gt;      }&lt;br /&gt;      else&lt;br /&gt;      {&lt;br /&gt;       str += digit[temp*j] + " " ;&lt;br /&gt;      }&lt;br /&gt;     }&lt;br /&gt;     else&lt;br /&gt;     {&lt;br /&gt;      str += digit[num] + " ";&lt;br /&gt;     }&lt;br /&gt;     num %= j;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   str += places[nPairs - i + 1] + " " ;&lt;br /&gt;   &lt;br /&gt;   if(nPairs &amp;gt; 1)&lt;br /&gt;   {&lt;br /&gt;    n %= (int)pow((double)1000, (double)nPairs-i);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; return str;&lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7612109661116230968-1126953528534332396?l=num2spokenstring.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://num2spokenstring.blogspot.com/feeds/1126953528534332396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://num2spokenstring.blogspot.com/2008/12/c-program-to-convert-number-to-spoken.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7612109661116230968/posts/default/1126953528534332396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7612109661116230968/posts/default/1126953528534332396'/><link rel='alternate' type='text/html' href='http://num2spokenstring.blogspot.com/2008/12/c-program-to-convert-number-to-spoken.html' title='C++ Program to convert number to spoken string'/><author><name>Mastishka</name><uri>http://www.blogger.com/profile/03787642406452947142</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
