View Full Version : سوال: توضیح درباره قطعه کد ، درخواست
mehran20
چهارشنبه 02 دی 1388, 13:44 عصر
ببخشید می شه این قسمت کد رو توضیح بدید که چطوری عمل می کنه و منظورش چیه
while (!Isunder())
l
من فقط با این شرط مشکل دارم
یا بازم همین شرط که برای if هم گذاشته شده در بک قطعه برنامه
تابعی هم که فراخوانی می شه اینه
//// underflow
int Isunder()
{
if (top == -1)
return 1;
else
return 0;
}
/////////////////////////////
ممنون می شم راهنمایی بفرماید
Hamid.Kad
چهارشنبه 02 دی 1388, 15:04 عصر
یه کم خوب توضیح ندادی مهندس !
این یه تابعه که اگه top مساوی -1 بشه 1 برمیگردونه در غیر اینصورت 0. تا اینجاش که مطمئنم مشکلی نداشتی.
توی حلقه while هم که میاد اون رو احضار میکنه. یعنی حلقه while معادل این دستوره:
while (top!=(-1))
اینو هم که میدونم مشکل نداشتی.
پس لابد مشکل منم ! :چشمک:
mortezamsp
چهارشنبه 02 دی 1388, 15:14 عصر
به احتمال زیاد مربوط به پشته هست ، در پشته میک متغیر top داریم که در آغاز تعریف پشته ، مقدار -1 دارد، و با هربار push یک واحد اظافه و با هر بارpop یک بار کاهش میابد.وقتی مقدار آن -1 باشد یعنی پشته خالی است .
دراینصورت ،این شرط هم میخواهد مشخص کند که آیا پشته خالی است یا نه.
mehran20
چهارشنبه 02 دی 1388, 16:04 عصر
درسته حق با شماست و برنامه ی کار با پشتست ، تبدیل infix به postfix
پس با توضیحاتی که شما دوستان دادید دستور توی حلقه while همونی هست که دوستمون توی پست دوم گفتن دیگه ، درسته؟؟
یعنی
این شرط while (!Isunder())
lبا این شرط فرقی نداره و همینو می گه while (top!=(-1))
l
درست متوجه شدم؟؟؟
اون چیزی که از تابع بر می گرده یا 1 هست یا 0
ابا ابن عددی که بر می گرده با top اصلی که همون -1 هست مقایسه می شه؟
اگه اینجوری چرا دوستموت در پست دوم درون پرانتز -1 رو نوشتن ف چون تابع امکان برگشت همچین عددی رو نداره؟
البته می دونم تمام مشکلات از گیرایی خودمه ، ههههههه
mehran20
پنج شنبه 03 دی 1388, 09:00 صبح
این کد رو شما نوشتی دوست من و توی برنامه اصلی وجود نداره ، تنها خواهش من فقط دونستن شرط درون while هست
مگه نمی گیم که تابع 0 و 1 رو بر می گردونه؟
int Isunder()
{
if (top == -1)
return 1;
else
return 0;
}
پس چطوری امکانش هست چیزی که شما می گین؟
اگه شماره ای هست ، تماس بگیرم فک کنم بهتر باشه ، تو پیام خصوصی اگه لطف کنید ممنون می شم
mehran20
پنج شنبه 03 دی 1388, 09:08 صبح
این جواب رو توی فروم ایران ویچ بهم دادن که فک می کنم کامل تر از این نمشه گفت
س . دستور while در چه شرایطی به کار خودش ادامه میده ؟؟
ج . در شرایطی که شرط داخل پرانتز هاش ، مقدار درستی رو برگردونند ،
یعنی مقدار true ؛ توجه : مقدار 1 هم true محاسبه میشه ،
حالا اینجا یکم تودرتو هستش ،
س . تو این خط :
کد:
while (!Isunder())
اول چی خونده میشه ؟؟
ج . ()Isunder
-------------
س . ()Isunder چی بر میگردونه ؟؟
ج . یا 1 ؛ یا 0
------------
فرض که 0 بر میگردونه
پس عبارتمون هست :
کد:
while(! 0)
------------
س . این علامت (!) یعنی چی ؟؟
ج . یعنی مخالف هرچی که بعدش میاد
------------
س . با توجه به اینکه 0 ، false ارزیابی میشه ، مخالفش چی میشه ؟؟
ج . ture
یعنی :
کد:
while( ! false)
که میشه نوست :
کد:
while(true)
------------
پس شرط حلقه درسته ، و حلقه آنقدر تکرار میشه ، تا شرطش غلط بشه .
------------
حالا فرض که 1 برمیگردونه ،
پس عبارت ما میشه :
کد:
while(! 1)
------------
س . این علامت (!) یعنی چی ؟؟
ج . یعنی مخالف هرچی که بعدش میاد
-----------
س . با توجه به اینکه 1 ، ture ازیابی میشه ، مخالفش چی مشه ؟؟ یعنی 1! ??
ج . یعنی غلط ؛ یا بعبارتی false .
----------
پس عبارت ما میشه :
کد:
while(! 1)
یا :
کد:
while( ! true)
یا :
کد:
while(false)
l
در نتیجه اینجا دیگه حلقه ادامه پیدا نمیکنه.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.