Sunday, April 28, 2013

Convert digits/numbers into word in C

Write a program which will convert digits/numbers into word in C 





#include<stdio.h>
#include<conio.h>
#define MAX 10
int main(void)
{
int i,flag=0,number;
char arr0[10][6]={"","One","Two","Three","Four","Five","Six","Seven","Eight","Nine"};
char arr1[10][8]={"","Ten","Twenty","Thirty","Fourty","Fifty","Sixty","Seventy","Eighty","Ninety"};
char arr2[10][10]={"","Eleven","Tewelv","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"};
int k[10]={0,0,0,0,0,0,0,0,0,0};
printf("Enter the number: ");
scanf("%d",&number);
printf("\nIn word the number is:");
printf("\n\t\n");
if (number==0)
    printf("Zero");
else
{
for(i=4;number>0;i--)
{
    k[i]=number%10;
    number/=10;
}
for(i=0;i<=4;i++)
  {
    if (k[i]>0||flag==1)
     {
    if (i==4)
        if(k[3]==1)
        printf("%s ",arr2[k[i]]);
        else
        printf("%s ",arr0[k[i]]);
    else if (i==3)
        if(k[3]==1 && k[4]>0)
        {
        }
        else
        printf("%s ",arr1[k[i]]);
    else if (i==2 && k[i]>0)
    printf("%s Hundred ",arr0[k[i]]);
    else if (i==1)
    {
        if (k[0]==1)
        {
        }
        else
        printf("%s ",arr0[k[i]]);
    printf("Thousand ");
    }
    else if (i==0)
    {
        if (k[0]==1 && k[1]>0)
        printf("%s ",arr2[k[1]]);
        else
        printf("%s ",arr1[k[i]]);
    flag=1;
    }
     }
  }
}
printf("\n\n");
return 0;
}

2 comments:

  1. How long this program..But style so excellent

    #include
    #include
    #include
    void main(){
    char init[27][12] = {" one "," two "," three ",
    " four "," five "," six ",
    " seven "," eight "," nine ",
    " ten "," eleven "," twelve ",
    " thirteen "," fourteen "," fifteen ",
    " sixteen "," seventeen "," eighteen ",
    " nineteen "," twenty "," thirty ",
    " fourty "," fifty "," sixty ",
    " seventy "," eight "," ninty "};
    char sthou[20]="",shund[20]="",sval1[20]="",sval2[20]="",result[100]="";
    int thou=0,hund=0,ten=0,temp=0,val1,val2,num,rem,c=0;

    clrscr();
    //USING COBOL LOGIC
    printf("*****AMOUNT IN WORDS*****\n\n");
    printf("Enter any value (upto 4 digits) : ");
    scanf("%d",&num);
    while(num>0){
    rem = num%10;
    c++;
    if(c<=2)
    temp = temp * 10 +rem;
    elseif(c==3)
    hund = rem;
    elseif(c==4)
    thou = rem;
    num = num/10;
    }
    while(temp>0){ //as ten contains two digit so reverse it
    rem = temp%10;
    ten = ten * 10 + rem;
    temp= temp/10;
    }

    if(thou>0){
    strcpy(sthou,init[thou-1]);
    strcat(sthou," thousand ");
    strcat(result,sthou);
    }

    if(hund>0){
    strcpy(shund,init[hund-1]);
    strcat(shund," hundred ");
    strcat(result,shund);
    }

    if(ten>0){
    if(ten>20){
    val1 = ten/10;
    val2 = ten%10;
    }
    if(val1>0){
    strcpy(sval1,init[val1+(18-1)]);
    strcat(result,sval1);
    }
    if(val2>0){
    strcpy(sval2,init[val2-1]);
    strcat(result,sval2);
    }
    }
    printf("\n\nAmount in word is as under \n");
    printf("%s",result);

    getch();
    }

    ReplyDelete
  2. Nice program..I hope you will continue with us

    ReplyDelete