ورود

View Full Version : سوال: مقایسه بدون دستور if



elahe software
دوشنبه 17 مهر 1391, 19:06 عصر
سلام من یه کد می خوام بنویسم که دو تا عدد از ورودی بگیره و بگه کدوم max و کدوم min هست.
بدون هیچ یک از دستورات if , for , while , ...

H_G_G_I
دوشنبه 17 مهر 1391, 19:19 عصر
خب بالاخره که باید دوتا عدد رو مقایسه کنی بفهمی کدوم کوچیکه یا بزرگ ! می تونی این طوری بنویس که با if هیچ فرقی نداره !
راه دیگه نیست ! شاید با شیفت دادن بشه ! اصلا پس شرط رو برا چی گذاشتن !:قهقهه:

int n1,n2;
std::cin >> n1;
std::cin >> n2;
int max = n1 > n2 ? n1 : n2;
std::cout << max;

elahe software
دوشنبه 17 مهر 1391, 20:09 عصر
ولی باید بدون هیچ کدوم از این دستورات باشه. برای یه آدمی که تازه اولای برنامه نویسیه!!!

Ananas
دوشنبه 17 مهر 1391, 21:07 عصر
سلام.
سعی کن خودت حلش کنی ولی جوابش می تونه این باشه:
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

int ab = a + b;
int minimum = (ab - abs(a - b)) / 2;
int maximum = ab - minimum;

maktoom
دوشنبه 17 مهر 1391, 21:12 عصر
سلام
من این عبارت رو د رگوگل سرچ کردم:
max without compare
و نتایج واقعا همونی بود که مطلوبه شماست.
منتها ازتون می خوام جواب نهایی رو که درست هم هست در همین صفحه ذکر کنید تا بعدها اگه کس دیگه ای هم مراجعه کرد بتونه استفاده کنه.
موفق باشید

Ananas
دوشنبه 17 مهر 1391, 21:15 عصر
از این راه هم میشه :

int ab = a + b;
int maximum = (ab + abs(a - b)) / 2;
int minimum = (ab - maximum);

maktoom
سه شنبه 18 مهر 1391, 09:06 صبح
از این راه هم میشه :

int ab = a + b;
int maximum = (ab + abs(a - b)) / 2;
int minimum = (ab - maximum);

این یعنی:
دو عدد ،صرف نظر ازاینکه کدوم بزرگتر و کدوم کوچکتر هستن، فاصله اونها از هم یعنی مقداری که باید به مجموع اون دو عدد اضافه بشه تا دو برابر عدد بزرگتر حاصل بشه. یعنی اول فاصله اون دو عدد رو پر می کنیم و حاصل دوبابر ماکزیمم خواهد بود.
پر واضحه که با داشتن ماکزیمم ومجموع دو عدد، میشه مینیمم رو هم پیدا کرد.

بهروز عباسی
سه شنبه 18 مهر 1391, 09:25 صبح
درود به همه
لینک زیر رو مشاهده کنی شاید مشکلت حل بشه!!
http://www.cplusplus.com/reference/algorithm/max/

موفق باشید.

Ananas
سه شنبه 18 مهر 1391, 15:51 عصر
البته این :

int ab = a + b;
int minimum = (ab - abs(a - b)) / 2;
int maximum = ab - minimum;


با این یکی :

int ab = a + b;
int maximum = (ab + abs(a - b)) / 2;
int minimum = (ab - maximum);


فرق داره ها. ولی به نظرم دومی قشنگ تره.