امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
سوال در ارتباط با مبحث ارزیابی عبارت ها
نویسنده پیام
Iron_Fist غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,456
موضوع‌ها: 70
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 109
( 456 تشکر در 134 ارسال )
ارسال: #1
سوال در ارتباط با مبحث ارزیابی عبارت ها
با سلام به دوستان

من یه عبارت Infix دارم و می خواهم به عبارت Prefix تبدیلش کنم
عبارت Infix این هست :                 A+B)*(C+D)-(E/F)+H)
حالا توش موندم جواب درست کدوم یک از جواب های زیر هست
       AB+CD/EFH+*- +       یا           AB+CD+/EFH+*-

با تشکر
(آخرین ویرایش در این ارسال: ۱۵-آبان-۱۳۸۵, ۱۹:۰۱:۱۴، توسط Iron_Fist.)
۱۵-آبان-۱۳۸۵, ۱۸:۵۵:۲۱
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #2
RE: سوال در ارتباط با مبحث ارزیابی عبارت ها
سلام . عبارت دومی عبارت درست هست !

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۱۶-آبان-۱۳۸۵, ۰۸:۰۱:۲۰
ارسال‌ها
پاسخ
Iron_Fist غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,456
موضوع‌ها: 70
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 109
( 456 تشکر در 134 ارسال )
ارسال: #3
RE: سوال در ارتباط با مبحث ارزیابی عبارت ها
ممد جان سلام
خسته نباشی

یعنی علویت عملگر با این حساب تو تبدیل Infix به Prefix از سمت
راست به چپ هست
ممد جون حقیقتش قضیه اینه که این استاد دانشگاه ما کلید کرده
که یه الگوریتمی بنویسیم که نتیجه اول رو بده
یعنی اولویت عملگر از چپ به راست باشه
من خودمم چند جا دیدم از چپ به راست حساب کرده و چند جا هم
از راست به چپ
یعنی ممکنه جفتش درست باشه

پیشاپیش از کمک متشکرم
۱۶-آبان-۱۳۸۵, ۱۰:۲۳:۲۶
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #4
RE: سوال در ارتباط با مبحث ارزیابی عبارت ها
خسرو جان سلام
من یه بررسی کردم دیدم که یه الگوریتم هست برای ساخت عبارت prefix ، بجای یک پشته از دو پشته استفاده می کنه ! توی این الگوریتم تقدم عملگر ها در نظر گرفته نمیشن :

1- دو تا پشته در نظر میگیریم .
2- نماد های عبارت infix رو از آخر به اول بررسی می کنیم بشکل زیر :

1) اگر نماد پرانتز بسته یا عملگر بود اونو توی پشته شماره 1 میزاریم
2) اگر نماد عملوند بود در پشته شماره 2 قرار میدیم
3) اگر نماد پرانتز باز بود ، از پشته 1 دوتا نماد برمیداریم . هر کدوم از اونها که عملگر بود به پشته دوم اضافه می کنیم .


3-این عمل رو تا جایی که به اول عبارت infix برسیم تکرار می کنیم .
4- در پایان مقدار موجود در پشته دوم رو معکوس می کنیم . در این زمان به جواب prefix می رسیم .



گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۱۷-آبان-۱۳۸۵, ۱۶:۳۷:۲۶
ارسال‌ها
پاسخ
Iron_Fist غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,456
موضوع‌ها: 70
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 109
( 456 تشکر در 134 ارسال )
ارسال: #5
RE: سوال در ارتباط با مبحث ارزیابی عبارت ها
ممد جان سلام

ممکنه جواب های روش های مختلف با هم فرق بکنه
یا اصلآ یه عبارت Infix می تونه چند تا Prefix داشته باشه ؟

با تشکر
۱۷-آبان-۱۳۸۵, ۱۸:۳۰:۵۲
ارسال‌ها
پاسخ
Iron_Fist غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,456
موضوع‌ها: 70
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 109
( 456 تشکر در 134 ارسال )
ارسال: #6
RE: سوال در ارتباط با مبحث ارزیابی عبارت ها
ممد جان فکر کنم این تاپیک رو یادت رفته
نه ؟
۲۰-آبان-۱۳۸۵, ۱۲:۴۸:۳۳
ارسال‌ها
پاسخ
Darg غایب
مدير بازنشسته
*****

ارسال‌ها: 894
موضوع‌ها: 40
تاریخ عضویت: تير ۱۳۸۴

تشکرها : 381
( 702 تشکر در 190 ارسال )
ارسال: #7
RE: سوال در ارتباط با مبحث ارزیابی عبارت ها
خسرو جان میشه یکمی (محدود) درباره Prefix و InFix توضیح بدی.
آخه من حتی نفهمیدم درباره چی داره اینجا بحث می شه...
۲۰-آبان-۱۳۸۵, ۱۴:۲۳:۳۵
وب سایت ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #8
RE:  سوال در ارتباط با مبحث ارزیابی عبارت ها
Iron_Fist نوشته است:ممد جان سلام

ممکنه جواب های روش های مختلف با هم فرق بکنه
یا اصلآ یه عبارت Infix می تونه چند تا Prefix داشته باشه ؟

با تشکر

سلام
والا این که جواب ها بخواد فرق بکنه یه حالت داره و اونم اینه که تقدم ( Priority ) یا جهت محاسبه ( Associativity ) عملگر ها رو تغییر بدیم وگرنه نباید جواب های مختلف بگیریم !

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۲۰-آبان-۱۳۸۵, ۱۹:۴۵:۱۱
ارسال‌ها
پاسخ
Iron_Fist غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,456
موضوع‌ها: 70
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 109
( 456 تشکر در 134 ارسال )
ارسال: #9
RE: سوال در ارتباط با مبحث ارزیابی عبارت ها
نقل قول: والا این که جواب ها بخواد فرق بکنه یه حالت داره و اونم اینه که تقدم ( Priority ) یا جهت محاسبه ( Associativity ) عملگر ها رو تغییر بدیم وگرنه نباید جواب های مختلف بگیریم
ممد جان سلام

صحبت من هم از اول همین بود
ببین اگه ما الویت عملگرمون ( تقدم عملگر ) از راست به چپ باشه چواب دوم درسته
و اگه الویت عملگرمون از چپ به راست باشه جواب اول صحیحه
در ضمن تو این لینکی که من دادم طرف الویت عملگر رو اومده
از چپ به راست حساب کرده یعنی با روش ایشون جواب اول
درسته
فکر کنم بشه این نتیجه رو گرفت که دو جواب صحیح هستند
http://www.cs.man.ac.uk/~pjj/cs2121/fix.html
نقل قول: خسرو جان میشه یکمی (محدود) درباره Prefix و InFix توضیح بدی.
آخه من حتی نفهمیدم درباره چی داره اینجا بحث می شه...
شما جون بخا
من از 7 صفحه کتاب ساختمان داده مهندس قلزم عکس گرفتم
که توش این قضایا رو توضیح داده
فقط چیزی که هست اینه که پریفیکس رو کم توضیح داده که فرقش
با پستفیکس اینه که برعکسشه دقیقآ
به لینکه نگاه کن چندتا مثال زده . متوجه می شی
۲۰-آبان-۱۳۸۵, ۲۰:۲۷:۴۱
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #10
RE: سوال در ارتباط با مبحث ارزیابی عبارت ها
نقل قول: صحبت من هم از اول همین بود
ببین اگه ما الویت عملگرمون ( تقدم عملگر ) از راست به چپ باشه چواب دوم درسته
و اگه الویت عملگرمون از چپ به راست باشه جواب اول صحیحه
در ضمن تو این لینکی که من دادم طرف الویت عملگر رو اومده
از چپ به راست حساب کرده یعنی با روش ایشون جواب اول
درسته
فکر کنم بشه این نتیجه رو گرفت که دو جواب صحیح هستند
http://www.cs.man.ac.uk/~pjj/cs2121/fix.html

کاملا درسته ! زمانی که الویت از چپ به راست باشه جواب اول درسته ! زمانی که الویت هم از راست به چپ باشه دومی درسته !
خب فکر کنم به جوابت رسیدی . این بستگی به خواسته طراح الگوریتم داره . مثلا توی همه کامپایلر ها عملگر های - + / * به اصطلاح Left Associative هستند یعنی الویت اونها از چپ به راسته .
پس اگه مثلا این عبارتی که شما نوشتی بخواد توی کامپایلر ++C/C بررسی و parse بشه ، با توجه به Left Associative بودن عملگر ها ، کامپایلر جواب اول رو تولید میکنه !
پس این نکته قابل ذکر هست که درست بودن یا نبودنش بستگی به موقعیتش داره . درسته که این عملگر ها Left Associative هستند ولی اگر همین + یا - بشکل تکی یا Unary ( نشانه مثبت بودن یا منفی بودن عدد یا عبارت مثلا 2- ) استفاده بشن اونوقت خاصیت Right Associative پیدا می کنند . اونوقته که کامپایلر جهت گیری متفاوتی داره . قضیه به همین سادگی ها نیست حالا میتونه ترکیبی از اینها وجود داشته باشه که اونوقت باید یه الگوریتم خیلی کامل تر از این بیاد و عبارت رو کنترل کنه .
کلا این بحث postfix و infix که توی کتاب های ساختمان داده میشه خیلی ابتدایی و ساده هستند و خیلی کاربردی نیستند . کاربرد اصلی اونها در ساخت بخش parser کامپایلر هست !

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۲۰-آبان-۱۳۸۵, ۲۱:۳۳:۴۲
ارسال‌ها
پاسخ
Iron_Fist غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,456
موضوع‌ها: 70
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 109
( 456 تشکر در 134 ارسال )
ارسال: #11
RE: سوال در ارتباط با مبحث ارزیابی عبارت ها
ممد جان خیلی ممنون از اینکه وقتت رو به مادادی
متشکرم
۲۰-آبان-۱۳۸۵, ۲۲:۵۸:۳۷
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Exclamation ارتباط پریز برق با لب تاب ؟! Ambassador 15 13,222 ۲۴-فروردین-۱۳۹۲, ۱۱:۴۱:۱۱
آخرین ارسال: Loyal
  ارزیابی نرم افزار من ! download69 30 18,601 ۰۳-شهریور-۱۳۹۰, ۱۵:۲۸:۳۵
آخرین ارسال: BiomiwopsyNip
  چند تا سوال كه ممكنه سوال شمام باشه behzad-khazama 4 4,293 ۰۳-آبان-۱۳۸۳, ۰۹:۰۹:۲۳
آخرین ارسال: ashkan
  ارتباط با ديتابيس kamran11958 13 7,337 ۱۳-مرداد-۱۳۸۳, ۱۳:۵۸:۰۸
آخرین ارسال: ashkan
  ارتباط با ديتا بيس روي اينترنت kamran11958 0 2,049 ۰۹-مرداد-۱۳۸۳, ۱۳:۴۷:۴۹
آخرین ارسال: kamran11958

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 6 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS