ورود

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



storm_saeed
چهارشنبه 18 دی 1392, 23:16 عصر
سلام دوستان
مثلا من میخوام یه عدد از کاربر بگیرم اگه عدد بزرگتر از صد بود یه تابعی رو که به شکل void show() هست که داخلش فقط یه cout<<"bozorgtar az 100" روچاپ کنه
میخواستم بدونم بدون عملگر های شرطی مثل if , ? : و switch میشه اینکارو کرد ممنون

کامبیز اسدزاده
چهارشنبه 18 دی 1392, 23:28 عصر
سلام دوستان
مثلا من میخوام یه عدد از کاربر بگیرم اگه عدد بزرگتر از صد بود یه تابعی رو که به شکل void show() هست که داخلش فقط یه cout<<"bozorgtar az 100" روچاپ کنه
میخواستم بدونم بدون عملگر های شرطی مثل if , ? : و switch میشه اینکارو کرد ممنون

یه نکته : switch و if عملگر نیستند به این ها باید بگید دستور if یا دستور switch عملگر به جمع / تفریق و ... میگن.
و اما جواب سوال شما : شما میتونید از هر دستوری برای شرط بندی استفاده کنیداز if / switch / do while / while و کلی موارد دیگر.

storm_saeed
چهارشنبه 18 دی 1392, 23:32 عصر
میخوام ببینم راهی هست که هم از if/.....switch او اینجور چیزا و هم از ? : استفاده نکرد واین کد رو زد ؟

کامبیز اسدزاده
چهارشنبه 18 دی 1392, 23:33 عصر
میخوام ببینم راهی هست که هم از if/.....switch او اینجور چیزا و هم از ? : استفاده نکرد واین کد رو زد ؟
خب چرا نباید از دستورات شرطی استفاده نکنید وقتی که شما شرط رو بیان میکنید ؟

storm_saeed
چهارشنبه 18 دی 1392, 23:40 عصر
کلا دارم میپرسم که راهی داره از اینا استفاده نکنیم
مثلا اگه بخوایم یه عددی که از عدد دیگه ای بزرگتره رو چاپ کنیم اینطور عمل میکنیم

(a>b)*a+(b>a)*b با اینکه یه شرطه ولی از دستورات شرطی استفاده نکردیم

کامبیز اسدزاده
چهارشنبه 18 دی 1392, 23:42 عصر
کلا دارم میپرسم که راهی داره از اینا استفاده نکنیم
مثلا اگه بخوایم یه عددی که از عدد دیگه ای بزرگتره رو چاپ کنیم اینطور عمل میکنیم

(a>b)*a+(b>a)*b با اینکه یه شرطه ولی از دستورات شرطی استفاده نکردیم

چرا نشه در برنامه نویسی هر فرمولی رو میشه اختراع کرد :لبخند: ولی برای راحتی کار و کد نویسی استاندارد بهترین گزینه در مقایسه شرطی بر اساس موقعیت و نیاز همین if else / switch / do while و ... هستند.

storm_saeed
چهارشنبه 18 دی 1392, 23:47 عصر
میدونم با if و while میشه نوشت:لبخندساده: ولی میخواستم بدونم چطور میشه بدون اینا نوشتش

کامبیز اسدزاده
چهارشنبه 18 دی 1392, 23:57 عصر
میدونم با if و while میشه نوشت:لبخندساده: ولی میخواستم بدونم چطور میشه بدون اینا نوشتش

تا جایی که سواد من اجازه میده حرف بزنم با خودم میگم برای مقایسه یک شرط باید از دستورات شرطی استفاده کنم‌! در غیر این صورت باید بشینم ابتدا یک الگوریتم درست کنم و در نهایت اونو به شکل خاصی مثل یک دستور شرطی حالا در تابع یا یه چیز دیگه تبلیدلش کنم و در نهایت ازش استفاده کنم.... و در نتیجه به جای اینهمه کار از همون دستورات شرطی استاندارد استفاده خواهم کرد.

خلاصه ترین شرط میتونه به صورت زیر باشه ...

storm_saeed
پنج شنبه 19 دی 1392, 00:26 صبح
راهش اینه که

(x >= 100) && cout << "bozorgtar mosavi sad";
(x < 100) && cout << "kochiktar az sad";

کامبیز اسدزاده
پنج شنبه 19 دی 1392, 00:31 صبح
راهش اینه که

(x >= 100) && cout << "bozorgtar mosavi sad";
(x < 100) && cout << "kochiktar az sad";


شما با این روش تنها میتونید در همون خط همون مقادیر رو بررسی کنید نه بیشتر !و این هم نوعی شرط است که شما از عملگر های شرطی استفاده کردین منظورم کوچکتر مساوی >= .... برای عملیات شرطی همان if و دستورات شرطی مناسبترین روش هستش.

storm_saeed
پنج شنبه 19 دی 1392, 00:33 صبح
سوال منم این بود که یه عدد داریم میخوایم بدون استفاده از if /else /switch /while /? : اگه بزرگتر از صد بود یه چیزی رو چاپ کنه و اگه نبود یه چیز دیگه بقیش مهم نیس (;

rahnema1
پنج شنبه 19 دی 1392, 00:42 صبح
سلام ، اینجوری میشه


#include <iostream>
using namespace std;
void f(){cout<<"bozorgtar az 100";}
void f1(){}
int main(){
int x=196;
void (*pf)( );
(x>100)&&(pf=*f);
(x<=100)&&(pf=*f1);
pf();
}

omidshaman
پنج شنبه 19 دی 1392, 00:43 صبح
اگر 0 و1 بخوای چاپ کنی راحته :

cout<< (number >100);

یک راه دیگه مثلا :
#include <iostream>
#include <ostream>
using namespace std;
class Number
{
public:
Number(int number):
number_(number)
{}
int number_;

};
ostream& operator<<(ostream& out,Number num)
{
int number=num.number_;
number >= 100 ? out<<"Bozorgtar " : out<<"Koochiktar";
return out;
}
int main()
{
Number number=132;
cout<< number;
}

UfnCod3r
پنج شنبه 19 دی 1392, 17:49 عصر
ی راهش اینه که البته شرط رو ما نمیبینم. ولی در اصل اینم از دستورات پرش استفاده می کنه .

char* t[2] = {"", "addad bozorg"};
std::cout << t[x > 100];

د مرض نداشتن شرط رو اختراع کردن که .:عصبانی++:
البته بعضی مواقع برا بهینه سازی ممکنه لازم بشه شرط رو برداشت (با مخلوط <<, >>, &, |, ^ یا چند تا از دستورات SSE و یا اسمبل نوشتن ):لبخند: