یک راه حل اصولی و درست و قشنگ برای این مسئله میخوام
سلام.
مسئله من اینه :
فرض کنید 3 تا حق انتخاب داریم داریم که در ترکیب با هم 8 حالت رو به وجود میارن.
نمونه این مسئله رو در مسئله"جستجوی پیشرفته" میشه دید.
حالت های انتخابی شامل موارد زیر میشن.
* 1 و 2 و 3 هر سه انتخاب شده باشن.
* 1 با 2 انتخاب شده باشه.
* 1 با 3 انتخاب شده باشه
* 2 با 3 انتخاب شده باشه
* فقط 1 انتخاب شده باشه
* فقط 2 انتخاب شده باشه
* فقط 3 انتخاب شده باشه
* هیچکدام انتخاب نشده باشه
فرض کنید در همون مسئله جستجوی پیشرفته با توجه به هر یک از این انتخاب ها باید بریم و از دیتابیس داده های خاصی رو بیاریم و نشون بدیم.
من نمیخوام از 8 تا if استفاده کنم چون به نظرم کد بدبویی میشه. راه حل قشنگش چیه؟
ممنون
نقل قول: یک راه حل اصولی و درست و قشنگ برای این مسئله میخوام
سلام
به زبان C# :
public void x()
{
bool a = true, b = false, c = false;
if (a)
{
if (b)
{
if (c)
{
//1,2,3
}
else
{
//1,2
}
}
else
{
if (c)
{
//1,3
}
else
{
//1
}
}
}
else
{
if (b)
{
if (c)
{
//2,3
}
else
{
//2
}
}
else
{
if (c)
{
//3
}
else
{
//Other
}
}
}
}
نقل قول: یک راه حل اصولی و درست و قشنگ برای این مسئله میخوام
نقل قول:
سلام
به زبان C# :
کد:
public void x()
{
bool a = true, b = false, c = false;
if (a)
{
if (b)
{
if (c)
{
//1,2,3
}
else
{
//1,2
}
}
else
{
if (c)
{
//1,3
}
else
{
//1
}
}
}
else
{
if (b)
{
if (c)
{
//2,3
}
else
{
//2
با تشکر از شما.
اما من تاکید کردم که نمیخوام از اینهمه if و else استفاده کنم.
نقل قول:
من نمیخوام از 8 تا if استفاده کنم چون به نظرم کد بدبویی میشه. راه حل قشنگش چیه؟
راه حل قشنگ مد نظرم بود. این کد رو که هر کسی که یه کلاس سی شارپ رفته باشه میتونه بنویسه. این همه شرط های پیاپی به نظرم جالب نیست.
نقل قول: یک راه حل اصولی و درست و قشنگ برای این مسئله میخوام
سلام،
فرض کن که هر انتخاب بیانگر یه بیت هست: 111 و بعد معادل Decimal اون رو پیدا کن و مستقیماً رکورد مورد نظر رو پیدا کن مثلاً id=7(111). :خجالت:
نقل قول: یک راه حل اصولی و درست و قشنگ برای این مسئله میخوام
اگه میشه کمی بیشتر توضیح بدید.
با تشکر
نقل قول: یک راه حل اصولی و درست و قشنگ برای این مسئله میخوام
سلام
ببین کد زیر می تونه بهت کمک کنه :چشمک:
کلا سه تا if و else داره !
//in the name of allah
#include<iostream.h>
#include<conio.h>
#include<string.h>
//using namespace std;
int temp[3];
char str[3];
int print(int);
void set(int ,int);
main ()
{
strcpy(str , "123");
set(3 , 0);
getch();
return 0;
}
void set(int n , int i)
{
if(i==n)
print(n);
else
{
temp [i] = 1;
set(n,i+1);
temp [i] = 0;
set(n,i+1);
}
}
int print(int n)
{
int i;
for (i = 0;i < n;i++)
if (temp[i])
cout << str[i];
cout << endl;
return 0;
}
نقل قول: یک راه حل اصولی و درست و قشنگ برای این مسئله میخوام
سلام،
حداقل به 3 تا if نیاز دارید.
شما فرض رو بر این بزارید که هر سه حالت انتخاب شده اند. (یعنی کوئری جستجو رو کامل بنویسید) بعد با سه تا if، هر سه حالت رو بررسی کنید، هر کدام که انتخاب نشده بود، فقط قسمتی از کوئری که مربوط به اون حال هست رو از توی کوئری حذف کنید. اینطوری با سه if همه هشت حالت رو پوشش میدید.