50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

تولید تمام حالت های کاراکتر در سی شارپ

سلام خدمت همگی . من میخوام کاراکتر های abc رو در تمام حالت های خود بدون تکرار یا با تکرار در TextBox یا Richtextbox نمایش دهم . بطور مثال abc رو نظر بگیرید :

میخوام به این شکل در بیاد و خروجیش رو داخل ویندوز فرم سی شارپ نشون بدم ؛

abc

acb

bac

bca

......... و همینطور ادامش . ممنون میشم راهنماییم کنید .

پرسیده شده در 1397/01/14 توسط

5 پاسخ

0

سلام . خیلی ازتون ممنونم . نمیتونستم پیدا کنم .

یه زحمت میکشین کامنت میذارین که کد های بالا چیکار میکنن ؟

شرمنده که باعث زحمت شدم . ببخشید

حالا اگه بخوام بین 5 کاراکتر سه تا رو انتخاب کنم یا 4 یا 5 تا رو انتخاب کنم و بچرخونم چطوریه مهندس ؟ یکم راهنماییم کنید ممنون میشم .

پاسخ در 1397/01/16 توسط
0

بهتره اینجارو هم بخونید

http://forum.sito.ir/showthread.php?tid=14529

پاسخ در 1397/01/23 توسط
0

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

پاسخ در 1397/01/23 توسط
1

جایگشت (به انگلیسی: Permutation) در قلمرو ترکیبیاتی آن به معنی مرتب‌سازی یا تغییر ترتیب اعضای یک مجموعه می‌باشد. ممکن است این چیدمان خطی یا غیر خطی (مثلاً دور یک دایره که در این حالت جایگشت دوری نامیده می‌شود) صورت گیرد. اعضای مجموعه نیز می‌توانند هر چیزی باشند مثلاً شی یا عدد یا حرف و همچنین می‌توانند تکراری باشند یا متمایز. در هر مورد، مهم، تعداد طرق چیدن این اعضا است.

منبع: ویکی پدیا

خب برا حل این مسئله نیاز به تعریف توابع بازگشتی داریم. میتونید نمونه کد زیر رو برا خودتون توسعه بدید.(روی فرم یه باتن بزارید با یه تکست باکس. خاصیت مولتی لاین تکست باکس رو فعال کنید)

 private static void Swap(ref char a, ref char b)
        {
            if (a == b) return;

            a ^= b;
            b ^= a;
            a ^= b;
        }

        public  void GetPer(char[] list)
        {
            int x = list.Length - 1;
            GetPer(list, 0, x);
        }

        private  void GetPer(char[] list, int k, int m)
        {
            if (k == m)
            {
                string s = new string(list);
                textBox1.Text += s+ Environment.NewLine;
            }
            else
                for (int i = k; i <= m; i++)
                {
                    Swap(ref list[k], ref list[i]);
                    GetPer(list, k + 1, m);
                    Swap(ref list[k], ref list[i]);
                }
        }

و روی باتن دابل کلیک کنید و کد زیر رو بنویسید.

string str = "abc";
            char[] arr = str.ToCharArray();
            GetPer(arr);
پاسخ در 1397/01/16 توسط
0

فقط مشکل الان اینجاست که یکی یکی تست نمیگیره . چون ABC رو باید از اول شروع کنه . مثلا بنویسه AB و BA و بعد ACوCA بره رو سه رقمی . با این کد نمیشه اینکارو کرد ؟! درسته ؟

پاسخ در 1397/01/16 توسط

پاسخ شما