مشاهدة النسخة كاملة : دالة الارقام العشوائيه


مبرمجه
28-04-2006, 04:20 PM
سؤال بخصوص
الدالة rand
كيف استخدمها؟
وما هي فائدتها؟


كذلك المجال scope
وش قصته؟
واستخدامه وفائدته

منطلق بطموحي
28-04-2006, 07:08 PM
السلام عليكم:

راجعي موضوع مسائل C++ المثبت بالقسم

بالنسبة للارقام العشوائية ستجدين شرح و امثلة بالصفحة العاشرة من الموضوع الردود 99 و 100

بالنسبة ل scope ستجدين شرح عنه ضمن شرح بقية الدوال ضمن نفس الموضوع

مبرمجه
28-04-2006, 10:13 PM
رجعت للشرح كان شرح رائع
ولقيت تمرين بدون حل

التمرين الاول:

اكتب معادلة تولد الارقام التالية تحديدا
3 ، 8 ، 13 ،18،23،28

حلي لها

rand()%6 +3

حليته كذا ولما سويت له رن بلوب طلعت كل القيم 3
وش الخطأ

3 ،9،27،81

(pow(3,rand()%4

ياليت تصحح لي

ودي اسأل اخوي الله يعطيك العافيه وش المجال scope
لاني مالقيته
كذلك وش فائدة seed؟
وكيف استخدمه؟

منطلق بطموحي
29-04-2006, 12:29 AM
السلام عليكم:

بالنسبة للارقام

3,8,13,18,23,28

فينقص معادلتك :

rand()%6 +3

شيء بسيط

لاحظي التالي :

3=3+5 *0
8=3+5*1
13=3+5*2
18=3+5*3
23=3+5*4
28=3+5*5

الان المعادلة تبدأ باول قيمة كما ذكرت بالموضوع و هي 3
القيمة المتغيرة هي بين 0 و 5
اذن shifting value قيمتها = 0-5+1=6
و لكن هل تلاحظين انها دوما مضروبة ب 5؟

اذا الحل يكون كالتالي

3+5*(rand()%6)

و اليك كود تجريبي:
#include<iostream>
#include<cstdlib>
using namespace std;

void main()**

for(int i=0;i<=15;i++) **
cout<<3+5*(rand()%6)<<endl; }



}

الان بالنسبة للارقام :

3,9,27,81

لاحظي التالي:

3=3^0
9=3^2
27=3^3
81=3^4

اذن القيم تتغير من 0 حتى 4

اذن shifting value لها قيمة = 0-4+1=5 و ليس 4 كما بمعادلتك

اذا وضعنا 4 فكاننا نقول ان 81 ليست ضمن مجموعة الارقام

فالمعادلة الصحيحة ستصبح:

pow(3,rand()%5)

بالنسبة ل seed او المعادلة srand() فان الامر يتعلق بترتيب ظهور الارقام العشوائية ....لاحظي عند وضع دالة عشوائية دون seed و عمل run للبرنامج اكثر من مرة فان الارقام ذاتها بنفس الترتيب هي التي ستظهر و لكن عند تغيير seed سيتغير الترتيب في كل مرة ...هذا كل ما في الامر


اما بالنسبة ل scoping فلي عودة مع الموضوع غدا ان شاء الله ...:)

مبرمجه
29-04-2006, 02:44 PM
مشكور اخوي الله يجزاك الخير
بالنسبه للمعادله الاولى كنت حالتها بس نسيت اكتب بالرد*5

انتظرك لــ Scope

وكذلك بسأل سؤال ب& _ *

الرفرنس وش سالفتها وكيف استخدمها

معليش على الاطاله بس ياليت تتحمل اسئلتي وتجاوبني
لان امتحاني مابقى عليه الا ايام

منطلق بطموحي
29-04-2006, 05:08 PM
بالنسبة ل scope او ما يسمى ب binary scope ستجدينه بالرد رقم 107 ضمن موضوع مسائل C++

و بالنسبة لقصة الرفرنس فستجدين الشرح ضمن الرد 133 و هناك تمرين متروك حله لكم ضمن الرد 134 على نفس الموضوع

اما بالنسبة ل * فهذه تعتبر مؤشرات pointers ...فهل درستم المؤشرات ؟

مبرمجه
29-04-2006, 08:25 PM
لا المؤشرات مابعد درسناها

الان خلصنا الفنكشن

وان شاء الله بنبدأ الاري

منطلق بطموحي
29-04-2006, 08:35 PM
السلام عليكم:

اذا الخطة سليمة تماما

عليك بفهم الدوال و ان المتغيرات التي تبعث لها على نوعين

by value و by refrence

و ال by refrence بالعلامة & و تعني عنوان الذاكرة و عادة ما يكون بلارقام الست عشرية hexdecimal ...ادرسي هذا الامر جيدا و تدربي عليه

و كذلك الدوال تقسم الى نوعين من حيث طريقة التصميم:

1.تكرارية اي باستخدام loops ( مثل for,while,do while )
2. ذاتية الاستدعاء recursively defined ( بدون استعمال ال loops )

اذا فهمت هذه الامور و طريقة تصميمها اضمن لك علامة ممتازة ان شاء الله ...انصحك بمراجعة درس الدوال بموضوع سي بلس بلس و حل التمارين عليه و خاصة التمرين الذي ذكرته الخاص بالقيم المرجعية (رفرينس) ...و اذا استصعب عليك شيء فانا بالخدمة...

بالنسبة ل * ستفهمين عملية تصميمها بشكل تفصيلي بعد دراسة المصفوفات arrays عند دراسة المؤشرات ....و ستفهمين اكثر و اكثر معنى & التي نستعملها الان و ماذا تعني ...

بالتوفيق
:)