تسجيل الدخول

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



إسم المستخدم
17-03-2005, 12:00 AM
السلام عليكم ..

دون إطالة .. مطلوب مننا واجب طويل في برمجة السي بلس بلس ..

ولست ممن يطلبون المساعدة في الواجبات ..

ولكني وجدت سؤالاً يتطلب إستخدام الدالة التي تخزن رقم عشوائي ..

ونحن لم ندرس هذه الدالة .. ولن ندرسها..

والمطلوب مننا الاستزاده من هذه الدالة من أي مرجع .. وإن كانت قائمة المساعدة الموجوده في البرنامج نفسه ..

وبصراحه حاولت إيجاد معلومات عنها ولم أستطع ..

لذا كم أتمنى مِن مَن يستطيع مساعدتي أن لايتأخر علي .. ولو بشرح بسيط لكيفية كتابتها واستدعائها ..

لأن آخر مدة لتسليم الواجب هي يوم السبت .. أي بعد يومين ..


وجزا الله من أراد مساعدتي ألف خير ..

بيبسيه
17-03-2005, 12:26 AM
طريقه الداله هي rand()%n+m

حيث الn هي المدى
وال m من وين راح يبدا ياخذ
مثال لو بغيت رقم عشوائي من 10 الى 16 تصيرn=6وm=6

اتمنى هذا الشرح الصغير يفيدك

إسم المستخدم
17-03-2005, 12:44 AM
أولاً .. ألف شكر لك حبيبتي بيبسيه على الرد السريع..

<< لاتخافين أنا بنوته مثلك :08:


ثانياً أنا فهمت الدالة .. واضح إنها سهله ..

بس أعتقد إن المطلوب من السؤال رقم عشوائي دون تحديد المجال ..

يعني بياخذ أي رقم عشوائي من الصفر إلى مالا نهاية دون تحديد ..

كيف أقدر اسويها هذي ؟؟



ثالثاً انتي بالشرح قلتي إنه إذا بناخذ رقم من 10 إلى 16 تكون الإم 6 والإن 6 !!!!

مافهمت ليش .. وش معنى 6 ؟؟

أليس من المفروض أن تكون الإم 10 .. والإن 16؟


رابعاً كيف يتم استدعائها ؟؟

أكتبها عادي ثم أختمها بفاصلة منقوطه ؟؟ مثلها مثل أي سطر في البرنامج؟


خامساً .. أعتذر عن أسئلتي الكثيرة .. وألف شكر لكِ من جديد..

بيبسيه
17-03-2005, 02:09 AM
سوري صح عليك الm=10

كنت ارد على اكثر من موضوع فتلخبطت والامر يكون

res=rand()%n+m;
وضروري يكون عندك مدى تاكدي من السؤال اونزليه اشوفه

إسم المستخدم
17-03-2005, 02:40 AM
آسفه بيبسيه تعبتك معي ..

هذا هو السؤال بالضبط ..

Write the following functions and give examples of how they would be invoked.

وكان فيه عدة فقرات .. من بينهم هذي الفقرة ..


A function which guesses a number defined by the computer and not by you !!! The computer chooses randomly a number; the user should guess this number. The user can just try ten times. (Hint : use the prepackaged function rand, use c++ help to know more about this function)

واضح إنهم ماطلبوا مدى .. ماأدري بالضبط كيف يبغونا نحله ..

إسم المستخدم
17-03-2005, 10:55 PM
بيبسيه .. النجددددددددددده بلييييييز ..

حاولت اني أعتمد على نفسي ..

وهذا اللي طلعت فيه ..



#include <iostream.h>
void rand();
int main()
{
int num;
int res;
res=rand()%100+1;
cout<<"guesses the number";
for (int i=1 ; i<=10 ; i++)
{
cin>>num;
if (num==res)
cout<<"Right \n";
else
cout<<"Try again \n";
}
return 0;
}



لازال يطلع لي ايرور واحد عند علامة % ..

وش الحل ؟؟


المطلوب من البرنامج إني أخزن رقم عشوائي وأخلي المستخدم يحزّر هالرقم .. وماله غير 10 محاولات ..


على فكرة .. انتي تقولين إنه لازم يكون فيه مدى ..

أنا افترضت إني أبغى من 1 إلى 100 .. وأمري لله ..



بليز اللي يقدر يساعدني لايتأخر .. التسليم السبت ..

مابقى لي تقريباً إلاّ هالسؤال ..:17:

TeamFlex
18-03-2005, 03:23 AM
بحاول اساعد بس صار لي سنتين ما تعاملة مع c++
فاذا فيه اي خطئ انتبهي عليه و صححيه


#include <iostream.h>
void rand();
int main()
{
int num;
int res;
res=rand(100)+1;
cout<<"guesses the number";
for (int i=1 ; i<=10 ; i++)
{
cin>>num;
if (num==res)
cout<<"Right \n";
else
cout<<"Try again \n";
}
return 0;
}


الكود كله صح لكن تعديل بسيط في المكان الي يضهر فيه خطئ
راح تظهر ارقام عشوائية بين الصفر و المئة
واذا تبين تعدلين اكثر غيري int الخاصة بال res لانها اكبر من اللزام و اختاري byet
لان مداه من صفر الى 255 مو محتاجة اكثر من هالرقم
شي ثاني ليه ما تضيفين cout تبين الرقم الي اختاره الكمبيوتر حتى يتاكد الي يستخدم البرنامج

كان ودي اعدل اكثر لكن ناسيه
واعتذر اذا فيه خلل

إسم المستخدم
18-03-2005, 01:37 PM
مشكووووووور أخوي والله ماقصرت ..

راح الخطأ اللي عند علامة %

وطلع لي خطأ ثاني بسيط وعدلته ..

كان يقول لي إنه الفنكشن ماتاخذ براميتر واحد ..

رحت عرّفت متغير إسمه X=100

وحطيته في الدالةبين القوسين .. بدال ماأحط 100 عادية ..

والحمدلله راح الخطأ .. وصار كودي كذا ..




#include <iostream.h>
int rand(int);
int x=100;
int main()
{
int num;
int res;
res=rand(x)+1;
cout<<"guesses the number";
for (int i=1 ; i<=10 ; i++)
{
cin>>num;
if (num==res)
cout<<"Right \n";
else
cout<<"Try again \n";
}
return 0;
}



بس المشكلة فيه خطأ يطلع لي إذا جيت أسوي بيلد .. وعجزت أعرف وشو ..

أبنسخ لكم اياه ..

-------------------Configuration: ex3 3 - Win32 Debug--------------------
Linking...
ex3 3.obj : error LNK2001: unresolved external symbol "int __cdecl rand(int)" (?rand@@YAHH@Z)
Debug/ex3 3.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
ex3 3.exe - 2 error(s), 0 warning(s)

.......................


عالعموم مشكورين كلكم بيبسيه وTeamFlex

مانقصني غير هذا السؤال .. أبسلمه كذا والشكوى لله ..

خاصة إنه مافيه أخطاء بالكومبايلر.

لأنه التسليم بكرا وماعاد يمدي تساعدوني..



أكرر من جديد..

الله يجزاكم ألف خير..

بيبسيه
18-03-2005, 04:12 PM
اتمنى اكون مااتاخرت عليك;)


#include <iostream.h>
#include<stdlib.h>
int main()
{
int num;
int res;
res=1+rand()%100;
cout<<"guesses the number";
for (int i=1 ; i<=10 ; i++)
{
cin>>num;
if (num==res)
cout<<"Right \n";
else
cout<<"Try again \n";
}
cout<<"number is="<<res<<endl;
return 0;
}

انتبهي ان الrandعريفه بالstdlibاهي فانكشن مثل ماحطيتيها

إسم المستخدم
18-03-2005, 07:07 PM
بيبسيه ..

مشكوووووووووووووووووووووووووره ياقلبي ..

ودي أصيح من الفرحه:17:

جزاك الله ألف خير .. ووفقك دنيا وآخره ..

جربت البرنامج وطلع روووووووووعه ..

المشكلة عندي يعني كانت بالمكتبه؟ .. أنا عرفته عادي كأي فنكشن ..

على فكرة .. أضفت الأمر break; وسط جملة الإف ..
عشان إذا اليوزر اختار إجابة صحيحه يكتب له البرنامج right وبعدين يطلع .. ماله داعي يكمل توقعات..
طلع البرنامج أحلى ومنطقي أكثر ..

بيبسيه والله مدري وش أسوي .. ودي أغني .. <<أقول اعقلي ..


الله يحققلك كل أمنية فبالك يارب ..