• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

برنامه تبدیل اعداد به حروف فارسی

Cyberlife

Registered User
تاریخ عضویت
28 مارس 2009
نوشته‌ها
1,517
لایک‌ها
624
محل سکونت
MACS0647-JD
سلام من یک برنامه به زبان C میخوام که یک عدد بگیره و معادل فارسی اون رو در خروجی چاپ کنه :

مثلا ً با گرفتن عدد 1536 در خروجی و با حروف انگلیسی چاپ کنه : Hezar o Pansado Siy o Shish

من سورس کد مشابهی رو از داخل یکی از وبلاگهای فارسی پیدا کردم که البته در خروجی به صورت حروف کاملاً‌

انگلیسی عدد مورد نظر رو چاپ میکنه ٬ اما موقع کامپایل کردن اون یکسری ارور میده که من موفق نشدم رفعش کنم ٬

لطفا به این کد یک نگاه بندازید و بگید اشکالش کجاست :

کد:
[LEFT]#include <iostream.h>
#include <conio.h>

int main()
{
    RE:clrscr();
    int s=0,i2=0,x[99];
    char y[99]={0};
    //Get number
    cout<<"Enter your number:\n";
    do
    {
        i2++;
        y[i2]=getche();
    }while(y[i2]!=13);
    i2--;
    //recognize digits
    for(register int i=1;i2>=1;i2--)
    {
        x[i]=y[i2]-48;
        i++;
    }
    i--;
    //Show number
    clrscr();
    cout<<"Your number: ";
    for(register int i3=i;i3>=1;i3--)
        cout<<x[i3];
    cout<<endl<<"Result:\n";
    //Translate
    for(;i>=1;i--)
    {
        if(s==1)
        {
            switch(x[i])
            {
                case 0:cout<<"";break;
                case 1:cout<<"eleven ";break;
                case 2:cout<<"twelve ";break;
                case 3:cout<<"thirteen ";break;
                case 4:cout<<"fourteen ";break;
                case 5:cout<<"fifteen ";break;
                case 6:cout<<"sixteen ";break;
                case 7:cout<<"seventeen ";break;
                case 8:cout<<"eighteen ";break;
                case 9:cout<<"nineteen ";break;
            }
            s=0;
        }
        else
        {
            if(i%3==2)
            {
                switch(x[i])
                {
                    case 0:cout<<"";break;
                    case 1:s=1;break;
                    case 2:cout<<"twenty ";break;
                    case 3:cout<<"thirty ";break;
                    case 4:cout<<"fourty ";break;
                    case 5:cout<<"fifty ";break;
                    case 6:cout<<"sixty ";break;
                    case 7:cout<<"seventy ";break;
                    case 8:cout<<"eighty ";break;
                    case 9:cout<<"ninety ";break;
                }
            }
            else
            {
                switch(x[i])
                {
                    case 0:cout<<"";break;
                    case 1:cout<<"one ";break;
                    case 2:cout<<"two ";break;
                    case 3:cout<<"three ";break;
                    case 4:cout<<"four ";break;
                    case 5:cout<<"five ";break;
                    case 6:cout<<"six ";break;
                    case 7:cout<<"seven ";break;
                    case 8:cout<<"eight ";break;
                    case 9:cout<<"nine ";break;
                        default:goto ESC;
                }
            }
        }
        if((x[i+2]==0&&x[i]==0)||(x[i]==0&&x[i-2]==0))
        {
            cout<<"";
        }
        else
        {
            if(i%3==0)
                cout<<"hundred ";
            else if(i==4)
                cout<<"thousand ";
            else if(i==7)
                cout<<"million ";
            else if(i==10)
                cout<<"billion ";
            else if(i==13)
                cout<<"trillion ";
            else if(i==16)
                cout<<"quadrillion ";
            else if(i==19)
                cout<<"quintillion ";
            else if(i==22)
                cout<<"sextillion ";
            else if(i==25)
                cout<<"septillion ";
            else if(i==28)
                cout<<"octillion ";
            else if(i==31)
                cout<<"nonillion ";
            else if(i==34)
                cout<<"decillion ";
            else if(i==37)
                cout<<"undecillion ";
            else if(i==40)
                cout<<"duodecillion ";
            else if(i==43)
                cout<<"tredecillion ";
            else if(i==46)
                cout<<"quattuordecillion ";
            else if(i==49)
                cout<<"quindecillion ";
            else if(i==52)
                cout<<"sexdecillion ";
            else if(i==55)
                cout<<"septendecillion ";
            else if(i==58)
                cout<<"octodecillion ";
            else if(i==61)
                cout<<"novemdecillion ";
            else if(i==64)
                cout<<"vigintillion ";
            else if(i==67)
                cout<<"unvigintillion ";
            else if(i==70)
                cout<<"duovigintillion ";
            else if(i==73)
                cout<<"trevigintillion ";
            else if(i==76)
                cout<<"quattuorvigintillion ";
            else if(i==79)
                cout<<"quinvigintillion ";
            else if(i==82)
                cout<<"sexvigintillion ";
            else if(i==85)
                cout<<"septenvigintillion ";
            else if(i==88)
                cout<<"octovigintillion ";
            else if(i==91)
                cout<<"novemvigintillion ";
            else if(i==94)
                cout<<"trigintillion ";
            else if(i==97)
                cout<<"untrigintillion ";
            else if(i==100)
                cout<<"duotrigintillion ";
            ESC:
        }
    }
    gotoxy(0,22);
    cout<<endl<<endl<<"Press any key to translate another number"<<endl;
    getch();
    goto RE;
}

//end[/LEFT]
 
Last edited:
بالا