Friday, September 14, 2007

I can give u alphabets if u give me DIGITS !!!


1 -- ONe 2 -- tWO 000 -- ZERo




Intro ::...


This program generates or gives alphabets for digits... For eg.. if u enter 200 it gets displayed as " Two hundred " Cool is'nt it.. I took great pain in bringing up this program... Try it out...


Source code :::...




/*PROGRAM THAT GIVES NUMBER IN WORDS*/



#include stdio.h
#include conio.h
#include string.h

char t[40]=" ",u[40]=" ",v[40]=" ",w[40]=" ",y[40]=" ";
void d1(char [9][20],long int );
void d2(char [9][20],char [18][20],long int );
int d3(char [9][20],char [18][20],long int ,char [6],char [3][10]);
void d4(char [9][20],char [18][20],long int ,char [6],char [3][10],int ,int );
void ch(char [9][20],char [18][20],long int ,char [6],char [3][10],int ,int );

void main()
{
int i=0,x,k=0;
long int n,num,z,j;
char a[9][20]={" one"," two"," three"," four"," five"," six"," seven"," eight"," nine"},b[18][20]={" ten"," eleven"," twelve"," thirteen"," fourteen"," fifteen"," sixteen"," seventeen"," eighteeen"," nineteen","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"};
char c[3][10]={" hundred"," thousand"," lakh"},an[6]={" and "};
clrscr();
printf("\n\n\n\n\n\n\n\n\n\ENTER THE NUMBER\n\n\t");
scanf("%ld",&n);
num=n;
while(n!=0)
{
n=n/10;
i++;
}
k=i;
switch(i)
{
case 0:
{
printf("zero\n");
break;
}
case 1:
{
d1(a,num);
puts(t);
break;
}
case 2:
{
d2(a,b,num);
puts(t);
break;
}
case 3:
{
x=d3(a,b,num,an,c);
puts(a[x-1]);
break;
}
case 4:
case 5:
{
d4(a,b,num,an,c,k,x);
puts(u);
break;
}
case 6:
case 7:
case 8:
{
z=num;
num=z/100000;
j=num;
ch(a,b,num,an,c,j,x);
strcat(t,c[2]);
strcpy(y,t);
num=z%100000;
if(num==0)
{
if(i==1)
puts(y);
else
{
strcat(t,"s");
puts(t);
}
}
else
{
j=num;
ch(a,b,num,an,c,j,x);
strcat(y,t);
puts(y);
}
break;
}
}
getch();
}



void d1(char a[9][20],long int num)
{
strcpy(t,v);
num%=10;
strcpy(t,a[num-1]);
}

void d2(char a[9][20],char b[18][20],long int num)
{
int i=0,j,k;
strcpy(t,v);
if(num/10==1)
{
num%=10;
strcpy(t,b[num]);
}
else
{
if(num%10==0)
{
num/=10;
strcpy(t,b[num+8]);
}
else
{ while(i<2) k="num%10;" i="1)" j="k;">int d3(char a[9][20],char b[18][20],long int num,char an[6],char c[3][10])
{
int i=0;
i=num/100;
strcpy(t,v);
if(num%100==0)
strcat(a[i-1],c[0]);
else
{
num%=100;
if((num/10)%10==0)
d1(a,num);
else d2(a,b,num);
strcat(a[i-1],c[0]);
strcat(a[i-1],an);
strcat(a[i-1],t);
}
return(i);
}


void d4(char a[9][20],char b[18][20],long int num,char an[6],char c[3][10],int k,int x)
{
int j=0;
long int i,n;
strcpy(u,v);
i=num/1000;
if(num%1000==0)
{
if(k==5)
{
n=num;
num=i;
d2(a,b,num);
num=n;
strcat(t,c[1]);
strcat(u,t);
}
else
{
strcat(a[i-1],c[1]);
strcat(u,a[i-1]);
}
}
else
{
if(k==5)
{
n=num;
num=i;
d2(a,b,num);
num=n;
strcat(u,t);
}
else
strcat(u,a[i-1]);
strcat(u,c[1]);
num%=1000;
n=num;
j=0;
while(n!=0)
{
n/=10;
j++;
}
if(j==1)
{
d1(a,num);
strcat(u,an);
strcat(u,t);
}
else if(j==2)
{
d2(a,b,num);
strcat(u,an);
strcat(u,t);
}
else
{
x=d3(a,b,num,an,c);
strcat(u,a[x-1]);
}
}
}


void ch(char a[9][20],char b[18][20],long int num,char an[6],char c[3[10],int j,int x)
{
int i=0,k;
strcpy(t,v);
while(j!=0)
{
j/=10;
i++;
}
if(i==1)
d1(a,num);
else if(i==2)
d2(a,b,num);
else if(i==3)
{
x=d3(a,b,num,an,c);
strcpy(t,a[x-1]);
}
else
{
k=i;
d4(a,b,num,an,c,k,x);
strcpy(t,u);
}
}




Merits ::...


* This program does not contain any exceptional cases..
* This program is valid upto eight digits and not more..




Sample Output ::....




If u want to try this out personally then clik the link below... Its really fuuny..... Enjoy!!!

http://www.ziddu.com/download.php?uid=aaqcnJesbaudlpbzaqqZnJGlbqeZlZymaQ%3D%3D8

http://www.ziddu.com/download.php?uid=Z6qfmJSnbK%2Bam5zzaKqZnJGlbKeZlZyoaw%3D%3D6

Look out ::...

This program can be run on anyother normal C compilers... Your comments are always welcomed....

1 comment:

Anonymous said...

Interesting to know.