نمایش نتایج 1 تا 7 از 7

نام تاپیک: یک راه حل اصولی و درست و قشنگ برای این مسئله میخوام

  1. #1
    کاربر دائمی آواتار amirjalili
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    هر جایی که کنجکاویم و نیاز به دانستنم رو تحریک کنه
    پست
    792

    یک راه حل اصولی و درست و قشنگ برای این مسئله میخوام

    سلام.
    مسئله من اینه :
    فرض کنید 3 تا حق انتخاب داریم داریم که در ترکیب با هم 8 حالت رو به وجود میارن.
    نمونه این مسئله رو در مسئله"جستجوی پیشرفته" میشه دید.
    حالت های انتخابی شامل موارد زیر میشن.

    * 1 و 2 و 3 هر سه انتخاب شده باشن.
    * 1 با 2 انتخاب شده باشه.
    * 1 با 3 انتخاب شده باشه
    * 2 با 3 انتخاب شده باشه
    * فقط 1 انتخاب شده باشه
    * فقط 2 انتخاب شده باشه
    * فقط 3 انتخاب شده باشه
    * هیچکدام انتخاب نشده باشه

    فرض کنید در همون مسئله جستجوی پیشرفته با توجه به هر یک از این انتخاب ها باید بریم و از دیتابیس داده های خاصی رو بیاریم و نشون بدیم.
    من نمیخوام از 8 تا if استفاده کنم چون به نظرم کد بدبویی میشه. راه حل قشنگش چیه؟
    ممنون
    آخرین ویرایش به وسیله amirjalili : یک شنبه 25 مهر 1389 در 12:51 عصر

  2. #2
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: یک راه حل اصولی و درست و قشنگ برای این مسئله میخوام

    سلام
    به زبان 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
    }
    }
    }
    }

  3. #3
    کاربر دائمی آواتار amirjalili
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    هر جایی که کنجکاویم و نیاز به دانستنم رو تحریک کنه
    پست
    792

    نقل قول: یک راه حل اصولی و درست و قشنگ برای این مسئله میخوام

    سلام
    به زبان 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 استفاده کنم چون به نظرم کد بدبویی میشه. راه حل قشنگش چیه؟
    راه حل قشنگ مد نظرم بود. این کد رو که هر کسی که یه کلاس سی شارپ رفته باشه میتونه بنویسه. این همه شرط های پیاپی به نظرم جالب نیست.

  4. #4

    نقل قول: یک راه حل اصولی و درست و قشنگ برای این مسئله میخوام

    سلام،
    فرض کن که هر انتخاب بیانگر یه بیت هست: 111 و بعد معادل Decimal اون رو پیدا کن و مستقیماً رکورد مورد نظر رو پیدا کن مثلاً id=7(111).

  5. دوشنبه 26 مهر 1389, 20:31 عصر


  6. #5
    کاربر دائمی آواتار amirjalili
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    هر جایی که کنجکاویم و نیاز به دانستنم رو تحریک کنه
    پست
    792

    نقل قول: یک راه حل اصولی و درست و قشنگ برای این مسئله میخوام

    اگه میشه کمی بیشتر توضیح بدید.
    با تشکر

  7. #6
    کاربر تازه وارد آواتار Gold_cpp
    تاریخ عضویت
    مهر 1389
    محل زندگی
    github
    پست
    90

    نقل قول: یک راه حل اصولی و درست و قشنگ برای این مسئله میخوام

    سلام
    ببین کد زیر می تونه بهت کمک کنه
    کلا سه تا 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;
    }


  8. #7
    VIP آواتار xxxxx_xxxxx
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    X place
    سن
    34
    پست
    4,768

    نقل قول: یک راه حل اصولی و درست و قشنگ برای این مسئله میخوام

    سلام،
    حداقل به 3 تا if نیاز دارید.
    شما فرض رو بر این بزارید که هر سه حالت انتخاب شده اند. (یعنی کوئری جستجو رو کامل بنویسید) بعد با سه تا if، هر سه حالت رو بررسی کنید، هر کدام که انتخاب نشده بود، فقط قسمتی از کوئری که مربوط به اون حال هست رو از توی کوئری حذف کنید. اینطوری با سه if همه هشت حالت رو پوشش میدید.
    الگوریتم هایی که تاریخچه خود را فراموش می کنند، محکوم به تکرار آن هستند.

قوانین ایجاد تاپیک در تالار

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