Quantcast
Channel: انجمنهای مجید آنلاین
Viewing all articles
Browse latest Browse all 23756

مشکل:برنامه تبدیل عدد به حرف

$
0
0
با سلام یک برنامه هست که وقتی بهش عدد میدی اونو به حروف تبدیل میکنه.سورس:
کد:

#include <iostream.h>
#include <conio.h>
int main()
{
    RE:clrscr();
    int s=0,i2=0,x[99];
    char y[99]={0};
    cout<<"Enter your number:\n";
    do
    {
        i2++;
        y[i2]=getche();
    }while(y[i2]!=13);
    i2--;
    for(register int i=1;i2>=1;i2--)
    {
        x[i]=y[i2]-48;
        i++;
    }
    i--;
    clrscr();
    cout<<"Your number: ";
    for(register int i3=i;i3>=1;i3--)
        cout<<x[i3];
    cout<<endl<<"Result:\n";
        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<<"***tillion ";
            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<<"***decillion ";
            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<<"***vigintillion ";
            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;
}

خوب در خط اول اگر clrscrبراشREنزاریم چه مشکلی پیش میاد؟کارREچیه؟
این قسمت :
کد:

do
    {
        i2++;
        y[i2]=getche();
    }while(y[i2]!=13);

مگه برای پیدا کردن تعداد اعداد حروف نست !خوب چه ربطی بهاین برنامهی ما داره و همچنین چرا نبایدy[i2]==13نباشه؟
در چه موقه یی از دستورregisterاستفاده میشه و چرا بعضی وقت ها به صورت:register intوبعضی وقت ها دیگهintشو نمی نویسن؟
کار این قسمت رو هم متوجه نمیشم:
کد:

for(register int i=1;i2>=1;i2--)
    {
        x[i]=y[i2]-48;
        i++;
    }

که بعدش میاد i---رومیزنه.
دوباره ازین دستور مشابه استفاده کرده:
کد:

for(register int i3=i;i3>=1;i3--)
        cout<<x[i3];
    cout<<endl<<"Result:\n";

این قسمت هارو هم متوجه نمیشم:
کد:

    if((x[i+2]==0&&x[i]==0)||(x[i]==0&&x[i-2]==0))
کد:

if(i%3==2)
وسوال آخر اینکه چرا وقتی برنامه رو کامپایل میکنی بعد ار یکبار اجرا دیگه بر نمیگرده یعنی بازم میتونی عدد بدی.
خیلی ممنون
بــــدرود

Viewing all articles
Browse latest Browse all 23756

Trending Articles