هل يوجد طريقة لاظهار كل الاحتمالات؟
راه اشرح السؤال...
------------------------- عندنا 5 احرف و هي[a,b,c,d,e] فما هي عدد الكلمات المشكلة من 4 احرف التي يمكن كتابتها؟(مع تكرار الاحرف) طبعا الجواب هو : 5*5*5*5=625 ----------------------- سؤالي هو : كيف يمكن كتابة كل الاحتمالات الـ625 ؟ اعرف انه يمكن ذالك من خلال التجربة مع الكثير من الوقت...و لكن هذا غير عملي هل يوجد طريقة علمية تسهل عملية كتابة كل الاحتمالات ؟ هل يوجد اي برنامج كمبيوتر يقوم بذالك ؟ |
السلام عليكم
انا لم ار هذا البرنامج الذي تطلب بس تريد برنامج يطبع لك كل الاحتمالات بهذي الحالة و لا عام .انا جاعد اشغل مخي علشان اسويه بالفجوال بيسك. من زمان ما اشتغلت عليه :confused: |
الله يخليك ياستاذ...ترى حتى انا قاعد افكر فيها...
لو انت عملتها بالفيجوال بيسيك , بعدين لما يظهر كل الاحتمالات, اقدر احفظ الاحتمالات بصيغة نوتبد او ملف مايكروسوفت ورد ؟ انتظر نتيجة افكارك :rolleyes: |
ما فهمت المشكلة
|
تبسيط المشكلة
التباديل ونعني بها جميع الاختيارات المتاحة حتى لو كانت مكررةمثال مبارة كرة قدم ودية بين فريقين إنهما سيلعبان مبارة واحدة لكن في الرياضيات (التباديل) نقول إن أمامهما ثلاثة احتمالات للعب مبارة ودية أولا - اللعب فب ملعب الفريق الأول ثانيا - اللعب في ملعب الفريق الثاني ثالثا - اللعب في ملعب محايد وهذا هو المقصود بالتباديل (جميع الاحتمالات الممكنة للعب المبارة) أتمنى أن تكون قد استوعبت الفكرة لأنك ستدرسها في المرحلة الثانوية وفي السؤال بالمشاركة الأولى مطلوب جميع الاحتمالات الممكنة لكلمة تتكون من أربعة حروف، ولدينا خمسة. أي أننا سنأخذ أربعة حروف من الخمسة ونكون منهم كلمة، ثم نقوم بتغيير ترتيب الحروف الأربعة وإعادة كتابة الكلمة مرة أخرى، وهكذا حتى تنتهي الحروف الخمسة. مثال اوجد تباديل كلمة (حمد) 1- ح م د 2- ح د م 3- م ح د 4- م د ح 5- د ح م 6- د م ح وهذه هي جميع الاختيارات (الكلمات) التي يمكن أن نكونها من حروف كلمة (حمد) وكما ترى فإن ثلاثة حروف تكون منهم ستة تباديل وأربعة حروف يتكون منهم (24) تبديل وخمسة حروف يتكون منهم (120) تبديل وكلما زاد عدد الحروف زاد عدد التباديل الممكنة زيادة مطردة باستمرار ولهذا السبب فإننا نعتمد على أجهزة الحاسب الآلي في مثل هذه العمليات التي يعجز عنها العقل البشري، قد ينسى أحد التباديل وجرب تكوين جميع الكلمات الممكنة من حروف كلمة ميثم |
خوارزمية البرنامج
بسم الله الرحمن الرحيم برنامج بلغة السي يحسب كل الاحتمالات الممكنة لمجموعة من التباديلشرح طريقة عمل البرنامج وخوارزمية البرنامج قريبا انتظروني ريثما أنتهي من ترجمة وفهم وتطبيق البرنامج حيث عثرت عليه بالصدفة (ولله الحمد) Permutations Imagine we have a collection of n distinct objects. There are n! ways toorder these objects; that is, we can form n! different arrangements of these n objects. This is true because any such arrangement will consist of n items, no matter which happens to be first. To choose the first object in a particular arrangement we have n options. However, to choose the second object after already having placed the first, we are left with one less choice. The first object is fixed at this point. Thus, we have (n-1) alternatives. As we place more and more objects we have less and less choices of objects to place. The summation below follows from this discussion: This is the same as n!. This section presents an algorithm for calculating all possible permutations (that is, not just the number of permutations but the actual permutated data) given the number of distinct data items to be arranged. Source Code References Scott Gasch Algorithms_Archive/node106.html100444 0 0 10752 7022137323 14773 0ustar rootroot Next: References Up: Permutations Previous: Permutations Source Code #include #include #define MAX_NUM 100 // // A single call to permut(k, n) will produce (n - k + 1)! // permutations consisting of the integers: // // r[1] ... r[k-1] ... r[k] ... r[n] // // In the output, the first r[1]...r[k-1] numbers will not // change. The r[k]...r[n] numbers will be permiated. An // initial call of permut(1, n) will produce the full n! // permutations of these n numbers. // // void permut(int k, int n, int *nums) { int i, j, tmp; /* when k > n we are done and should print */ if (k <= n) { for (i = k; i <= n; i++) { /** * each element i is promoted to the kth place while the rest * of the items from k to i-1 are shifted to make room with * a ripple-shift operation. * **/ tmp = nums[i]; for (j = i; j > k; j--) { nums[j] = nums[j-1]; } nums[k] = tmp; /* recurse on k+1 to n */ permut(k + 1, n, &(nums[0])); for (j = k; j < i; j++) { nums[j] = nums[j+1]; } nums[i] = tmp; } } else { for (i = 1; i <= n; i++) { printf("%d ", nums[i]); } printf("\n"); } } int main(void) { int iCount; int rgNums[MAX_NUM]; int i; printf("Enter n: "); scanf("%d", &iCount); /* create a workspace of numbers in their respective places */ for (i = 1; i <= iCount; i++) { rgNum[i] = i; } printf("Permutations:\n"); permut(1, iCount, rgNum); } |
لكن اخي العزيز كيف مثلا نعرف عدد الكلمات التي يمكن ان تتكون من احرف كلمة حمد . و هل يسمح بالتكرار فيها مثل ح ح ح ؟؟.
|
التكرار نوعان
أولا هناك شئ يسمى التباديل ويسمح فيه بتكرار الحروف وغيره،
ثانيا هناك شئ يسمى التوافيق ولا يسمح فيها بالتكرار وكل منهما له قانونه الخاص في الرياضيات (لا أذكره حاليا) - (سأضيفه قريبا هنا) :d ومن خلال هذا القانون يمكنك معرفة عدد التباديل الممكنة أو عدد التوافيق الممكنة. |
لا أعرف
لقد حاولت تحويل الكود المكتوب بلغة السي إلى خوارزمية بحيث ينمت تطبيقها بأي لغة برمجة،
ولكنيي فشلت للأسف أطلب المساعدة من كل من لديه خبرة بلغة السي |
آسف لا أعرف أنا
|
الساعة الآن 06:01 AM |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. TranZ By
Almuhajir