ورود

View Full Version : هر کدام از دستورات به کار رفته در این برنامه چه کاری انجام می دهند؟



Cyberlife
جمعه 03 دی 1389, 15:31 عصر
سلام

من برنامه ای از یکی از دوستام گرفتم که کار این برنامه تبدیل عدد به معادل حروفی آن است. من میخوام

بدونم که هر کدام از دستورات به کار رفته در این برنامه چه کاری انجام میدهند.

خوب اول بفرمایید که این برنامه با C نوشته شده یا ++C ٬ و بعد از اون درباره دستوراتی که توی اون به کار

رفته واینکه هر دستور چه کاری انجام میده توضیح بدید. البته این برنامه دستورهای تکراری زیادی داره ٬

بنابراین در دستورات تکراری فقط یکی از اونها رو توضیح بدید. با تشکر



#include <iostream.h>
#include <conio.h>

int main()
{
RE:clrscr();
int s=0,i2=0,x[99];
char y[99]={0};
//Daryaft Adad
cout<<"Lotfan yek adad Vared Konid:\n";
do
{
i2++;
y[i2]=getche();
}while(y[i2]!=13);
i2--;
//Tashkhis Argham
for(register int i=1;i2>=1;i2--)
{
x[i]=y[i2]-48;
i++;
}
i--;
//Namayesh Adad
clrscr();
cout<<"Adad Shoma: ";
for(register int i3=i;i3>=1;i3--)
cout<<x[i3];
cout<<endl<<"Hasel:\n";
//Tarjome adad be horof
for(;i>=1;i--)
{
if(s==1)
{
switch(x[i])
{
case 0:cout<<"";break;
case 1:cout<<"yazdah ";break;
case 2:cout<<"davazdah ";break;
case 3:cout<<"sizdah ";break;
case 4:cout<<"chahardah ";break;
case 5:cout<<"panzdah ";break;
case 6:cout<<"shanzdah ";break;
case 7:cout<<"hevdah ";break;
case 8:cout<<"hejdah ";break;
case 9:cout<<"nozdah ";break;
}
s=0;
}
else
{
if(i%3==2)
{
switch(x[i])
{
case 0:cout<<"";break;
case 1:s=1;break;
case 2:cout<<"bisto ";break;
case 3:cout<<"sio ";break;
case 4:cout<<"chehelo ";break;
case 5:cout<<"panjaho ";break;
case 6:cout<<"shasto ";break;
case 7:cout<<"haftado ";break;
case 8:cout<<"hashtado ";break;
case 9:cout<<"navado ";break;
}
}
else
{
switch(x[i])
{
case 0:cout<<"";break;
case 1:cout<<"yek ";break;
case 2:cout<<"do ";break;
case 3:cout<<"se ";break;
case 4:cout<<"chahar ";break;
case 5:cout<<"panj ";break;
case 6:cout<<"shesh ";break;
case 7:cout<<"haft ";break;
case 8:cout<<"hasht ";break;
case 9:cout<<"noh ";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<<"sado ";
else if(i==4)
cout<<"hezaro ";
else if(i==7)
cout<<"miliono ";
else if(i==10)
cout<<"triliardo ";
ESC:
}
}
gotoxy(0,22);
cout<<endl<<endl<<"Lotfan kelidi ra baraye tarjome adadi digar feshar dahid"<<endl;
getch();
goto RE;
}

//end

ali najafi
دوشنبه 06 دی 1389, 09:45 صبح
خدمت شما:

خط اول و دوم که فایل های سرایند رو معرفی میکنه.
خط چهارم توی همه ی برنامه ها باید باشه.(تابع mainرو معرفی میکنه که سیستم عانل اون رو اجرا کنه).
خظ شش:اول خط در آخر توضیحات توضیح داده میشود.بعد از ":"صفحه ی خروجی رو پاک میکنه.
خط 7:متغیر های sوi2رو برابر با صفر و آرایه ی x رو به طول 99 تعریف میکنه.
خط 8:رشته ی yرو به طول 99 و برابر با تهی قرارمیده(البته باید{\0}باشه).
خط9:این توضیحات که بعد از /قرار میگیرند ربطی به برنامه ندارند و فقط برای اینه که چیزی رو به برنامه نویس یاد آوری کنه.
خط10:ابتدا اون جمله رو مینویسه و سپس با کاراکتر کنترلی \nبه خط بعدی میره که جواب رو اونجا بنویسی.
خط های11 الی 16:یک حلقه رو درست میکنه که اینجوریه:
ابتدا یک واحد به i2اضافه میکنه،سپس y[i2]رو از شما میگیره((یک کاراکتر)برای مثال یعنی اگر پس از افزایش i2برابر با سه شود،سومین خانه ی حافظه از رشته ی yرو از شما میگیره.)سپس برسی میشه که y[i2](همونی که وارد شد)برابر با 13 نبود ( منظور کلید enterهست)دوباره کار های قبلی رو تکرار میکنه.تا جایی که کد 13 برگرده و از حلقه خازج شه.
خط 16:یک واحد از i2کم میشه.
خط 18:یک حلقه ی تکرار که ثبات(متغیر هایی که در حافظه ی سی پی یو نگهداری میشوند)به نام iتعریف میکنه و با اون یک حلقه درست میکنه.
خط 25:صفحه ی خروجی رو پاک میکنه.
خط 33:شرط(اگر s=1بود)
خط 35:x[i]رو برسی میکنه:
اگر برابر با 0 بود هیچی نمینویسه و از switchخارج میشه
اگر برابر با 1بود مینویسه yazdahو خارج میشه
...
خط 50:اگر شرط خط 33 درست نبود اون کار ها رو انجام میده.
خط 52:اگر باقیمانده ی تقسیم iبر 3 برابر با دو بود اون کار هارو انجام میده.
خط 85:&&یعنی اگر هر دو شرط درست بود(سمت چپ و راست &&)ارزش درستی دارد.
خط 102:مکان نما را به ستون اول و سطر 22 میبرد.
خط 104:صبر میکنه تا کلیدی فشار داده بشه.


خط 105:به خط شماره ی شش میره!یعنی برنامه از اونجا شروع میشه!