laveran
جمعه 05 خرداد 1391, 21:47 عصر
سلام... در چگونگی اجرای دوتا برنامه موندم و هرچی فکر میکنم به جایی نمیرسم دیگه مغزم سوت میکشه :عصبانی:
دستور زیر عدد را از مبنای 16 به مبنای 10 میبره اما هرچی فکر کردم کار دستورو نفهمیدم. اگه این دستورو توضیح بدید ممنون میشم..
چرا 'a' - 'A' کردیم؟؟
snum[i] -= ('a'-'A')
بعد چرا این دستورو می نویسیم
digit=snum[i]-'A'+10;
hasel *= 16;
مگه hasel در بالا صفر تعریف نشده پس هر مقداری به 16 ضرب بشه صفر میشه دیگه!!! ولی چرا صفر نمیشه؟؟:اشتباه:
سورس برنامه اینه
char snum[30];
int i, digit;
long int hasel=0;
cout<<"\nEneter a Hexadecimal number:";
cin>>snum;
for(i=0; snum[i]!=NULL; i++)
{
if(snum[i]>='a' && snum[i]<='z') /* if char is a small letter */
snum[i] -= ('a'-'A'); /* convert char to uppercase */
if(snum[i]>='0' && snum[i]<='9') /* convert ascii code to value */
digit=snum[i]-'0';
else
digit=snum[i]-'A'+10;
hasel *= 16; /* converting from hex to decimal */
hasel += digit;
}
cout<<hasel;
در مورد یک خط از یرنامه ی بازی حدس زدن عدد اگه توضیح بدید ممنون میشم... بازی به این شکله که سیستم عددی را حدس زده و در نظر میگیرد و ما آن عدد را یکی یکی وارد میکنیم هروقت عدد ما با عدد حدس زده ی سیستم برابر بود پیغام میده که عدد همین بوده... همه ی برنامه را متوجه شدم بجز این خط
number=rand()%(maxtest+1);
قسمتی از تابع برنامه اینه
void play()
{
int state,maxtest,number,n,life=5;
cout << "Select difficulty mode:\n";
cout << "1 : Numbers between (1-250) to be guessed\n";
cout << "2 : Numbers between (1-500) to be guessed\n";
cout << "3 : Numbers between (1-750) to be guessed\n";
cout<< "4 : Numbers between (1-1000) to be guessed\n";
cout<<"Select the range of numbers for guessing\n";
cin>>state;
switch (state)
{
case 1: maxtest=250;
break;
case 2: maxtest=500;
break;
case 3: maxtest=750;
break;
case 4: maxtest=1000;
default:
return ;
}
srand(time(0));
number=rand()%(maxtest+1);
cout<<"Enter your guess:";
cin>>n;
check(n,life,number,maxtest);
دستور زیر عدد را از مبنای 16 به مبنای 10 میبره اما هرچی فکر کردم کار دستورو نفهمیدم. اگه این دستورو توضیح بدید ممنون میشم..
چرا 'a' - 'A' کردیم؟؟
snum[i] -= ('a'-'A')
بعد چرا این دستورو می نویسیم
digit=snum[i]-'A'+10;
hasel *= 16;
مگه hasel در بالا صفر تعریف نشده پس هر مقداری به 16 ضرب بشه صفر میشه دیگه!!! ولی چرا صفر نمیشه؟؟:اشتباه:
سورس برنامه اینه
char snum[30];
int i, digit;
long int hasel=0;
cout<<"\nEneter a Hexadecimal number:";
cin>>snum;
for(i=0; snum[i]!=NULL; i++)
{
if(snum[i]>='a' && snum[i]<='z') /* if char is a small letter */
snum[i] -= ('a'-'A'); /* convert char to uppercase */
if(snum[i]>='0' && snum[i]<='9') /* convert ascii code to value */
digit=snum[i]-'0';
else
digit=snum[i]-'A'+10;
hasel *= 16; /* converting from hex to decimal */
hasel += digit;
}
cout<<hasel;
در مورد یک خط از یرنامه ی بازی حدس زدن عدد اگه توضیح بدید ممنون میشم... بازی به این شکله که سیستم عددی را حدس زده و در نظر میگیرد و ما آن عدد را یکی یکی وارد میکنیم هروقت عدد ما با عدد حدس زده ی سیستم برابر بود پیغام میده که عدد همین بوده... همه ی برنامه را متوجه شدم بجز این خط
number=rand()%(maxtest+1);
قسمتی از تابع برنامه اینه
void play()
{
int state,maxtest,number,n,life=5;
cout << "Select difficulty mode:\n";
cout << "1 : Numbers between (1-250) to be guessed\n";
cout << "2 : Numbers between (1-500) to be guessed\n";
cout << "3 : Numbers between (1-750) to be guessed\n";
cout<< "4 : Numbers between (1-1000) to be guessed\n";
cout<<"Select the range of numbers for guessing\n";
cin>>state;
switch (state)
{
case 1: maxtest=250;
break;
case 2: maxtest=500;
break;
case 3: maxtest=750;
break;
case 4: maxtest=1000;
default:
return ;
}
srand(time(0));
number=rand()%(maxtest+1);
cout<<"Enter your guess:";
cin>>n;
check(n,life,number,maxtest);