لعبة المزرعة السعيدة لعبة الفراخ

‏شرح الشفل‬ --()()()()+*shuffle


_________________

** السلام عليكم جميعا :
  ** برنامج يقوم بعملية خلط لعناصر المصفوفة الاحادية (shuffle) .
_____________________________________________________
عملية الخلط لعناصر المصفوفة الواحدة تكون 
باعطاء قيمة عشوائية لمكان عنصر من عناصر المصفوفة 
وتبادل العنصر والعنصر صاحب المكان الجديد اماكنهما 
كما في الصورة الاولى (نرى من خلال الشكل عمليةالانتقال)
نرى ان كل قيمة انتقلت بشكل عشوائي من مكانها لمكان اخر 
اي ان المبادلة تكون بالاندكس
....
للقيام بالعملية هذه من خلال برنامج C سنقوم بالخطوات التالية
..
أولا :- نعرّف مصفوفة وليكن الحجم 5 ونعرف متغير ليحل محل الكاونتر في اللوب i
ومتغير لوضح القيمة العشوائية للاندكس فيه x ومتغير للتخزين المؤقت في السواب
temp
اذا بالتعريف نضع
int i,x,a[5],temp;
طبعا سنحتاج في هذا البرنامج ل rand() لاستدعاء القيم العشوائية 
فنستدعي مكتبة stdlib.h
...
ثانيا :- ندخل اللوب الخاصة بالمبادلة ويرجى الانتباه هنا
لتوضيح اكبر يرجى مراجعة درس السواب وساضع الرابط في التعليق الاول
تبدا اللوب باعطاء المتغير temp الخاص بالتخزين المؤقت قيمة اول عنصر بالمصفوفة
وبعد ذلك 
نعطي x متغير تبديل الاندكس قيمة عشوائية ويجب ان تكون ضمن عدد عناصر المصفوفة
كيف يمكن ذلك؟
من خلال الموديولاس % 
بحيث ان باقي قسمة اي عدد على رقم اخر 
يكون احتمال الناتج من صفر الى المقسوم عليه -1 
مثلا عندنا هنا 5 عناصر
نضع 
x=rand()%5 فيكون نطاق الناتج من 0 الى 4
من ثم نقوم بعمل سواب بين القيم
فينتقل العنصر الاول في المصفوفة الى مكان العنصر صاحب الاندكس الناتج في المتغير العشوائي 
ويصبح مكان العنصر الذي كان المتغير العشوائي يشير الى مكانه هو العنصر الاول
ثم تتكرر العملية مع باقي العناصر حسب الخوارزمية الموضحة ادناه 
...
ثالثا .. تبدا لوب الطباعة 
وهكذا ينتهي البرنامج 
____________________________________

الكود :
‪#‎include‬<stdio.h>
#include<stdlib.h>
int main(){

for(i=0;i<5;i++){
scanf("%d",&a[i]);
}
for(i=0;i<5;i++){
temp=a[i];
x=rand()%5;
a[i]=a[x];
a[x]=temp;
}
for(i=0;i<5;i++){
printf("%d \t",a[i]);
}
}
=================================




0 التعليقات:

لعبة من سيربح المليون لعبة زوما