تالار گفتمان مانشت

نسخه‌ی کامل: تست سال 86
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
خسته نباشید

لطف کنید و این سوال و کلا سوالهای این سبکی رو بفرمایید چطوری حل می شوند.

سپاس
راه اصولیش اینه که اول کدهای سه آدرسه این دستورات رو بنویسید و بعد بااستفاده از اصول بهینه سازی تعداد متغیرهای موقت رو به حداقل برسونید.اما مشکل این روش اینه که خیلی وقت گیره.
راه ساده و کنکوریش اینه که اولویت عملگرها رو در نظر بگیرید و حداقل تعداد متغیرها رو حساب کنید.یه مثال ساده می زنم:
فرض کنید قصد داریم حداقل تعداد متغیرهای موقت در محاسبه عبارت [tex]a-b*(c d)[/tex]
رو حساب کنیم.اول باید حاصل عبارت داخل پرانتز رو به دست بیاریم و در متغیر فرضا t1 قرار بدیم. بعد حاصل ضرب b در حاصل پرانتز یا همون t1 رو به دست بیاریم و در t1 قرار می دیم و در نهایت t1 رو از a کم می کنیم و نتیجه رو در متغیر t1 قرار می دیم.کدش به صورت زیر هستش:
t1=c+d
t1=b*t1
t1=a-t1
پس برای محاسبه عبارت [tex]a-b*(c d)[/tex] به تنها یک متغیر کمکی احتیاج داریم.

در ضمن جواب تست هم ۳ هست یعنی حداقل۳ تا متغیر کمکی نیاز داریم
(04 تير 1390 12:06 ق.ظ)mfXpert نوشته شده توسط: [ -> ]راه اصولیش اینه که اول کدهای سه آدرسه این دستورات رو بنویسید و بعد بااستفاده از اصول بهینه سازی تعداد متغیرهای موقت رو به حداقل برسونید.اما مشکل این روش اینه که خیلی وقت گیره.
راه ساده و کنکوریش اینه که اولویت عملگرها رو در نظر بگیرید و حداقل تعداد متغیرها رو حساب کنید.یه مثال ساده می زنم:
فرض کنید قصد داریم حداقل تعداد متغیرهای موقت در محاسبه عبارت [tex]a-b*(c d)[/tex]
رو حساب کنیم.اول باید حاصل عبارت داخل پرانتز رو به دست بیاریم و در متغیر فرضا t1 قرار بدیم. بعد حاصل ضرب b در حاصل پرانتز یا همون t1 رو به دست بیاریم و در t1 قرار می دیم و در نهایت t1 رو از a کم می کنیم و نتیجه رو در متغیر t1 قرار می دیم.کدش به صورت زیر هستش:
t1=c+d
t1=b*t1
t1=a-t1
پس برای محاسبه عبارت [tex]a-b*(c d)[/tex] به تنها یک متغیر کمکی احتیاج داریم
دیگه بهتر از این نمیتونم توضیح بدم

در ضمن جواب تست هم ۳ هست یعنی حداقل۳ تا متغیر کمکی نیاز داریم
به نظرتون با دو تا متغیر کمکی نمیشه حلش کرد اگه نمیشه چرا سه تا می خواد؟
این سوالاو بوران زده با 3 تا اما مدرسان زده با 2 تا....
لینک مرجع