C program to express number into words.
There is an UNEQUAL amount of good and bad in most things, the trick is to work out the ratio and act accordingly - The JesterThis is a program to express number into words.
Examples:
Input : 123
Output: One Hundred Twenty Three
Input 123456
Output : One Hundred Twenty Three Thousand Four Hundred Fifty Six
This post is divided into following parts.
- Expressing two digit number in words.
- Expressing three digit number in words.
- Expressing number in words.
- All code at once.
Note : This program was compiled on DEV C++
Expressing Two Digit Number In Words :-
Here is the code:
char *tens(int n){ int a; char *p,temp[20]; char t1[][10]={"Zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten", "Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"}; char t2[][10]={"Twenty","Thirty","Forty","Fifty","Sixty","Seventy","Eighty","Ninety"}; if(n<20){ strcpy(temp,t1[n]); } else { a=n/10-2; strcpy(temp,t2[a]); if((a=n%10)!=0) { strcat(temp," "); strcat(temp,t1[a]); } } p=(char *) malloc((strlen(temp)+1)*sizeof(char)); strcpy(p,temp); return(p); }Expressing Three Digit Number In Words:-
It uses the tens().
char *hundred(int n){ int a; char temp[40],*p; char t[][10]={"Zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine"}; if(n>99 && n<1000){ a=n/100; strcpy(temp,t[a]); strcat(temp," Hundred "); a=n%100; p=tens(a); strcat(temp,p); free(p); } else { p=tens(n); strcpy(temp,p); free(p); } p=(char *) malloc((strlen(temp)+1)*sizeof(char)); strcpy(p,temp); return(p); }
Expressing Number In Words:-
Here is the main code that uses the above functions to express number in words.
#include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> #define SIZE 100 char *tens(int n); char *hundred(int n); int main(){ char *p,*ptr,*temp; long n; int a,flag=0,c=0; char t[][10]={"Thousand","Million","Billion","Trillion"}; p=(char *) malloc(SIZE * sizeof(char)); temp=(char *) malloc(SIZE * sizeof(char)); printf("\nEnter a number : "); scanf(" %ld",&n); if(n<1000){ ptr=hundred(n); strcpy(p,ptr); free(ptr); } else { a=n%1000; ptr=hundred(a); strcpy(p,ptr); free(ptr); n=n/1000; while (n>0){ a=(n>999)? n%1000 : n; ptr=hundred(a); strcpy(temp,ptr); strcat(temp," "); strcat(temp,t[c++]); strcat(temp," "); strcat(temp,p); free(p); p=(char *) malloc(SIZE * sizeof(char)); strcpy(p,temp); free(temp); temp=(char *) malloc(SIZE * sizeof(char)); free(ptr); n=n/1000; } } printf("\n %s",p); free(p); getch(); }All Code At Once:-
#include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> #define SIZE 100 char *tens(int n); char *hundred(int n); int main(){ char *p,*ptr,*temp; long n; int a,flag=0,c=0; char t[][10]={"Thousand","Million","Billion","Trillion"}; p=(char *) malloc(SIZE * sizeof(char)); temp=(char *) malloc(SIZE * sizeof(char)); printf("\nEnter a number : "); scanf(" %ld",&n); if(n<1000){ ptr=hundred(n); strcpy(p,ptr); free(ptr); } else { a=n%1000; ptr=hundred(a); strcpy(p,ptr); free(ptr); n=n/1000; while (n>0){ a=(n>999)? n%1000 : n; ptr=hundred(a); strcpy(temp,ptr); strcat(temp," "); strcat(temp,t[c++]); strcat(temp," "); strcat(temp,p); free(p); p=(char *) malloc(SIZE * sizeof(char)); strcpy(p,temp); free(temp); temp=(char *) malloc(SIZE * sizeof(char)); free(ptr); n=n/1000; } } printf("\n %s",p); free(p); getch(); } char *tens(int n){ int a; char *p,temp[20]; char t1[][10]={"Zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten", "Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"}; char t2[][10]={"Twenty","Thirty","Forty","Fifty","Sixty","Seventy","Eighty","Ninety"}; if(n<20){ strcpy(temp,t1[n]); } else { a=n/10-2; strcpy(temp,t2[a]); if((a=n%10)!=0) { strcat(temp," "); strcat(temp,t1[a]); } } p=(char *) malloc((strlen(temp)+1)*sizeof(char)); strcpy(p,temp); return(p); } char *hundred(int n){ int a; char temp[40],*p; char t[][10]={"Zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine"}; if(n>99 && n<1000){ a=n/100; strcpy(temp,t[a]); strcat(temp," Hundred "); a=n%100; p=tens(a); strcat(temp,p); free(p); } else { p=tens(n); strcpy(temp,p); free(p); } p=(char *) malloc((strlen(temp)+1)*sizeof(char)); strcpy(p,temp); return(p); }
Comments
Post a Comment