ورود

View Full Version : سوال: نوشتن برنامه بدون استفاده از هیچ نوع شرطی



tatar11
جمعه 20 آبان 1390, 09:17 صبح
برنامه ای که سه عدد را بخواند و بدون استفاده از دستورات شرطی انها را از کوچک به بزرگ مرتب کند
باید الگوریتم خاصی داشته باشه که من بلد نیستم

حامد مصافی
جمعه 20 آبان 1390, 15:13 عصر
گمان می‌کنم این یک پروژه دانشجویی باشه.
به هر حال این (http://barnamenevis.org/showthread.php?312420-%DB%8C%D8%A7%D9%81%D8%AA%D9%86-%D8%B9%D8%AF%D8%AF-%D8%A8%D8%B2%D8%B1%DA%AF%D8%AA%D8%B1-%D9%88-%DA%A9%D9%88%DA%86%D8%AA%D8%B1-%D8%A7%D8%B2-%D9%85%DB%8C%D8%A7%D9%86-%D8%AF%D9%88-%D8%B9%D8%AF%D8%AF-%D8%A8%D8%AF%D9%88%D9%86-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%D8%A7%D8%AA-%D8%B4%D8%B1%D8%B7%DB%8C) الگوریتم دو عدد
ازش استفاده کن برای سه عدد.

اعتراف می‌کنم که نتونستم جلوی خودمو برای حل این مسئله بگیرم. حالا تلاش کن اگه نتونستی من جوابمو می‌دم بهت

NIMA_1981
جمعه 20 آبان 1390, 17:12 عصر
#include <iostream>
using namespace std;

int main() {
int n1 = -11;
int n2 = 19;
int n3 = 12;
int min = (n1 < n2) ? ((n1 < n3) ? n1 : n3) : ((n2 < n3) ? n2 : n3);
int max = (n1 > n2) ? ((n1 > n3) ? n1 : n3) : ((n2 > n3) ? n2 : n3);
cout <<"min:" <<min <<" max:"<<max;
}

tatar11
جمعه 20 آبان 1390, 18:37 عصر
درسته دانشجوییه اما سوال آزاده با بچه ها دو هفته ست داریم روش فکر میکنیم اما به نتیجه نمی رسیدیم ممنون

Arcsinos
جمعه 20 آبان 1390, 19:13 عصر
#include <iostream>
using namespace std;

int main() {
int n1 = -11;
int n2 = 19;
int n3 = 12;
int min = (n1 < n2) ? ((n1 < n3) ? n1 : n3) : ((n2 < n3) ? n2 : n3);
int max = (n1 > n2) ? ((n1 > n3) ? n1 : n3) : ((n2 > n3) ? n2 : n3);
cout <<"min:" <<min <<" max:"<<max;
}




خیلی ببخشیدا ، الان یعنی شما از دستورات شرطی استفاده نکردید ؟

x ? y : z; با if(x) y; else z; چه فرقی میکنه ؟

روش حل سوال اینه که با همون روشی که آقای مصافی گفتن بیایید Max رو بین a,b پیدا کنید و بعد بیایید max رو بین c و max به دست اومده از مرحله ی قبل بدست بیارید که تا اینجا max به دست اومد

min رو هم به همین روال بدست بیارید بعد بایید max+min رو از a+b+c کم کنید که میانگین هم بدست میاد و بعد چاپ کنید .

موفق و پیروز باشید .

NIMA_1981
جمعه 20 آبان 1390, 19:34 عصر
دوست عزیز دستورات شرطی یعنی if و else توی صورت مسله نگفتن که از این اپراتور ها استفاده نکنید

در ضمن برای حل هر مسله ممکنه راه های مختلفی وجود داشته باشه

شما هم یک سری به این لینک بزنی حتما با این اپراتورهای زبان سی آشنا میشی

http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B

موفق باشید

حامد مصافی
جمعه 20 آبان 1390, 22:23 عصر
این روش من:


#include <math.h>
#include <iostream>

int fn_max(int a, int b)
{
return (int)((a + b) / 2.00 + abs(a - b) / 2.00);
}

int fn_min(int a, int b)
{
return (int)((a + b) / 2.00 - abs(a - b) / 2.00);
}
int main()
{
int a = 10;
int b = 5;
int c = 7;

int max_ab = fn_max(a, b);
int total_max = fn_max(max_ab, c);

int min_ab = fn_min(a, b);
int total_min = fn_min(min_ab, c);

int total_middle = a + b + c - total_max - total_min;

cout << total_max << endl;
cout << total_middle << endl;
cout << total_min << endl;
}