PDA

View Full Version : بزرگترین عدد بین A,Bرا بدون استفاده از شرط جستجو



badash
سه شنبه 01 آذر 1384, 10:47 صبح
سلام
برنامه ای بنویسید که بزرگترین عدد بین A,Bرا بدون استفاده از شرط جستجو و چاپ نماید
تشکر

mzjahromi
سه شنبه 01 آذر 1384, 11:00 صبح
اینهم تمرینه که
http://www.barnamenevis.org/forum/showthread.php?t=32829

manfy30
سه شنبه 06 دی 1384, 18:43 عصر
سلام
max(a,b)=((a+b)-abs(a - b))/2
امیدوارم به دردت بخوره
------------ محسن فقیهی (30-) -------------
یا حق

behrangnirvana
سه شنبه 18 بهمن 1384, 19:17 عصر
Doost Aziz:Aghaye <MAHDISJ> Omidvaram Ahamiyyate In Rabetaro Bedooni.

اَرژنگ
دوشنبه 08 اسفند 1384, 13:07 عصر
البته تابع بالا درستش به صورت max(a,b)=((a+b)+abs(a - b))/2 هست که احتمالا قبل abs اشتباهاً به جای مثبت ، منفی گذاشته شده بود.

متاسفانه، خیر، جواب داده شده درست نیست.
برایه اینکه ببینید چرا درست نیست، به تعریف abs یک نگاه بندازید، متوجه میشید که هنوز هم از شرط داره استفاده میشه.
این سوال را میشه به ریاضی جواب داد، ولی از لیمیت و توان استفاده میشه که از حده آشنائی دانشجوهایه معمولی یکمی بالتره.

اَرژنگ
دوشنبه 08 اسفند 1384, 13:08 عصر
اینهم تمرینه که
http://www.barnamenevis.org/forum/showthread.php?t=32829

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

mehdi_394
دوشنبه 08 اسفند 1384, 15:21 عصر
من قبلا این تمرین رو با true و false که ارزش عددی آنها 1و 0 است حل کردم .حالا نمی دانم به درد شما می خوره یا نه:
این هم جواب من:
max=(a>b)*a+(b>a)*b
در هر صورت فقط یکی از عبارات دو پرانتز درست خواهد بود و نتیجه ماکزیمم a,b را در max قرار می دهد.

sh_roohani
دوشنبه 08 اسفند 1384, 19:32 عصر
من قبلا این تمرین رو با true و false که ارزش عددی آنها 1و 0 است حل کردم .حالا نمی دانم به درد شما می خوره یا نه:
این هم جواب من:
max=(a>b)*a+(b>a)*b
در هر صورت فقط یکی از عبارات دو پرانتز درست خواهد بود و نتیجه ماکزیمم a,b را در max قرار می دهد.
سلام،
البته من نمی دونم تابع ماکزیموم برای دو عدد مساوی باید چه رفتاری رو نشون بده، اما اگه باید یکی از دو عدد رو برگردونه که این کد اینکارو نمی کنه، بلکه صفر برمی گردونه و برای اصلاحش باید فقط در یکی از دو جمله اول یا دوم به جای < از =< استفاده بشه.
اما از اونجاییکه این سوال در بخش الگوریتم هم مطرح شده، (البته می دونم که اینجا بخش C هست!)، باید عرض کنم که این کد از یه قابلیت زبان C استفاده می کنه و به عنوان یه کد خوب کار می کنه، اما نمی تونه به عنوان یه الگوریتم استفاده بشه، چون وابستگی زبانی داره.
اگه در این مورد اشتباه می کنم، لطفا منو راهنمایی کنین.

ممنون.

sh_roohani
سه شنبه 09 اسفند 1384, 09:21 صبح
سلام،
ممنون از راهنماییتون. ولی فکر کنم من منظورم رو درست مطرح نکردم. سوال من اینه که آیا همه زبانها، یا بیشتر اونا، می تونن به طور خودکار، یا با یک عملگر یا تابع خاص، مقادیر true و false رو به 1 و 0 تبدیل کنن و این عبارت درست کامپایل بشه؟
از این گذشته، اگر اشتباه نکنم، در C هیچ تضمینی نیست که true همیشه برابر یک باشه و می تونه هر مقدار غیر صفری باشه. در واقع این به پیاده سازی کامپایلر بستگی داره.
مسئله سوم رو هم یه دوستی به نام ab_ba در بخش الگوریتم مطرح کردن. آیا خود استفاده از عملگرهای بزرگتر و کوچکتر، استفاده از شرط محسوب نمی شه؟

sh_roohani
چهارشنبه 10 اسفند 1384, 19:48 عصر
تا جایی که من میدونم اگر از یه عبارت true ، تابع int بگیرید حاصل یک میشه و اگه هر مقداری هم بهش اضافه کنید و به بولین تبدیل کنید باز هم true هست ، ولی جواب یک شرط توی c توسط کامپایلر با صفر یا یک داده میشه.
سلام،
در مورد کامپایلرهای موجود فرمایش شما درسته. سوال من هم فقط جنبه مفهومی داشت. راستش من نگرانم نکنه یه روز یه نفر تصمیم بگیره کامپایلری بسازه که توی اون، حاصل تبدیل نتیجه ارزیابی یه گزاره منطقی درست به عدد صحیح چیزی غیر از 1 باشه، مثلا 12-، به گمانم از نظر مشخصات زبان C اینکار درسته، ولی من که اصلا خوشم نمیاد:افسرده:
از ترس اینکه یه روز یه نفر این حرکت غیر اخلاقی (منظورم ساختن همون کامپایلر کذاییه) رو انجام بده، همیشه موقع کد نوشتن سعی می کنم این فکر رو از سرم بیرون کنم که با حاصل ارزیابی یه گزاره، می تونم رفتاری مثل یه عدد صحیح داشته باشم:اشتباه: .
به هر حال، ممنون از توضیحتون.:لبخندساده

karzari
پنج شنبه 11 اسفند 1384, 03:48 صبح
سلام
باید بگم همیشه در C تضمین وجود داره که مقدار true را بتوان فهمید و آن هم اینه که حتما برای مقدا صحیح نباید 1 باشه شما باید اون رو مساوی بزرگتر از 1 قرار بدید و مطمئن باشد که مقدار صحیح صفر یا زیر صفر نیست .

اَرژنگ
شنبه 13 اسفند 1384, 05:41 صبح
من قبلا این تمرین رو با true و false که ارزش عددی آنها 1و 0 است حل کردم .حالا نمی دانم به درد شما می خوره یا نه:
این هم جواب من:
max=(a>b)*a+(b>a)*b
در هر صورت فقط یکی از عبارات دو پرانتز درست خواهد بود و نتیجه ماکزیمم a,b را در max قرار می دهد.

این عبارت فرقی با استفاده از شرط ندارد،
(a>b)
روش مختصر نویسی شرطی هستش.