الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اريد منكم شرح السوال فقط ..

بدأه سرمد الليل في 24 مايو 2011 · 27 رد · 2,277 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اريد منكم شرح السوال فقط

Write an email simulator that process mail at an average of 40 messages per minute. As messages are received, they are placed in a queue. For the simulation assume that the messages arrive at an average rate of 30 messages per minute. Remember, the message must arrive randomly, so you will need to use a random number generator to determine when messages are received

Each minute, you can dequeue up to 40 messages and send them.

Assume that 25% of the messages in the queue cannot be sent in

any processing cycle. Again, you will need to use a random number

to determine whether a given message can be sent. If it cannot be

sent, put it back at the end of the queue or enqueue it.

Run the simulator for 10 to 15 minutes, tracking the number of

times each message had to be requeued. At the end of the

simulation, print the statistics that show:

1. The total messages processed

2. The average arrival rate

3. The average number of messages sent per minute

4. The average number of messages in the queue in a minute

5. The number of messages sent on the first attempt, the number

sent on the second attempt, and so forth

6. The average number of times messages had to be requeued (do

not include the messages sent the first time in this average.)

1
#2

مافيه احد يقدر يشرح لى ضروووووووووورى تكفون

#3

وينكم يامبرمجييييييييييييين مافيه احد يساعدنى

#4

قرأت الموضوع للتو... اي جامعة هذه التي تسأل طلابها اسئلة غبية مثل هذه؟ :huh:

هو السؤال مش صعب، لكن الذي يصعب القضية انه في صورته هذه doesn't make sense

دائما نلوم الطالب انه غبي، بينما الواقع ان اللوم على الدكتور الغبي

هو الذي حاصل ان السؤال يريد ان يعلمك اساليب مستخدمة في queue للطلبات الواردة لنظام معين

وهذا النظام هو خادم بريد الكتروني.. والفرضية تقول ان النظام سيستقبل 30 ايميل في الدقيقة

وطبعا 30 ايميل في الدقيقة يعتبر ولا شيء... لكن السؤال يريدك ان تتخيلي ان 30 ايميل في الدقيقة عدد كبيــــر وان السيرفر لا يستطيع معالجة الطلب

السؤال يقولك انك ستضعين ايميلات في queue، وثم يقول لك نسبة الايميلات التي يجب ان يتم ارسالها الى الجهة المرجوة

وكذلك يقول نسبة الايميلات التي سيصبح لها drop.. الخ.. النسب موضعه في السؤال

وثم يقول اطبعي احصائيات عن عدد الايميلات المستقبلة، المرسلة.. الخ

يعني تقنيا حتى تجاوبي على السؤال انتي لست محتاجة تكتبين ايميل بالكامل

تقنيا ممكن ترمزي لكل ايميل برقم موحد.... لكن اسالي الدكتور حتى تتاكدي... لانه حسب المثال مافرقت من منظور الqueue اذا تم التعامل مع ايميل حقيقي ام فقط رقم موحد

1

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

#5

مرحبا سرمد الليل ..

الموضوع بسيط إن شاء الله ..

بدايةً .. نقوم بإنشاء عدد عشوائي ما بين الـ 0 وبين الـ 30 ..

الرقم العشوائي سيكون مساوٍ لعد الايميلات التي وصلت إلينا ..

أي أننا سنقووم بإدخال عناصر إلى الـ َQueue بجملة

for(int i = 0 ; i<rand ; i++ )
myQueue.enqueue

الآن نصل إلى الجزء الغبي الذي ذكره دكتوركم الكريم والذي فعلاً يوضح التناقض ..

أن 25 % من الرسائل لن يتم إرسالها .. أي عدد ثابت من الرسائل لن يتم إرساله ..

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

ولكن طريقة الحل بسيط ..

فلو كان لدي 100 رسالة × 0.25 = 25 رسالة لن يتم إرسالها ..

وبقية الرسائل يتم إخراجها من الـ Queue بإفتراض تم معالجتها وإرسالها ..

وعليك الباقي من حيث إستخراج المتوسط وما إلى ذلك .. ولا تنسى تكرار البرنامج لمدة 15 دقيقة كما ذكر الدكتور ..

بالتوفيق إن شاء الله ..

1
#6

اريد توضيح اكثر لم افهم السوال

#7

كل الذي يحصل: تخيلي لديكي ايميلات ستدخليهم في queue وثم تخرجيهم بنسبة معينة

بعضهم تخرجيهم ك drop

وبعضهم تخرجيهم ك sent

والبعض يصبح له requeue (يدخل في الطابور من جديد)

وثم تطبعي الاحصائيات

اختلف مع محمد في:

for(int i = 0 ; i<rand ; i++ )

هذا لا يعني شيء

1

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

#8

هذى مقدمه قبل بدايه السوال ربا تستطعون تشرحون لى باكثر دقه

Queues are commonly used in network system .for example , email is placed in queue while it is waiting to be sent and after it arrives at the recipient mailbox a problem occurs .however if the outgoing mail processor cannot send one or more of the messages in the queue .for example a message might not be sent because the recipient system is not available

اريد شرح بالتفصيل الملل لم افهم بعد ارجووووووووووووووووووكم

#9

هل قرأتي ردودنا؟ ماذا لم تفهمي بالضبط؟

جميع اسئلتك تم الجواب عليها في الردود المسبقة

1

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

#10

اختي سرمد .. هل لديك معرفة باستخدام الـ Queue .. ؟

إذا كان نعم .. فالموضوع بسيط .. راجعي الردود بتأني .. وصلي على النبي على قولتهم .. وراح تفهمي .. لأن الشرح تم إعادته أكثر مِن مَرَّه ..

password123 كتب:

كل الذي يحصل: تخيلي لديكي ايميلات ستدخليهم في queue وثم تخرجيهم بنسبة معينة

بعضهم تخرجيهم ك drop

وبعضهم تخرجيهم ك sent

والبعض يصبح له requeue (يدخل في الطابور من جديد)

وثم تطبعي الاحصائيات

اختلف مع محمد في:

for(int i = 0 ; i<rand ; i++ )

هذا لا يعني شيء

مَرحباً أستاذي الكَريم ..

كنت أتمنى أن يكون إختلافك معي مرفقاً مع تصحيح كي نستفيد مِنكُم ..

كل ما قصدته بتلك الجمله .. بعد إستخراج الرقم العشوائي rand يتم إدخال إيميلات إلى الـ Queue بنفس هذا العدد وذلك باستخدام جملة التكرار أعلاه ..

وأتمنى إضافة التصحيح من شخصكم الكريم ..

أطيب الأماني

#11

المشكلة مع الfor loop الذي وضعته انه سيدخل عدد عشوائي من الايميلات في queue..

يعني مرة يدخل (ربما) 10 ايميلات.. ومرة ثانية يدخل (ربما) 20 ايميل... لا تدري

وهذا مناقض للسؤال

السؤال يريد ادخال جميع الايميلات في الqueue

الrandom حسب السؤال هو فقط في:

dequeue سواء ب send او drop

re-queue

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

#12

ممتاز ملاحظة جيدة .. بارك الله فيك .. :regular_smile:

#13

السلام عليكم

اسعد الله مساءكم

حبيت اشاركم بالموضوع

انا لدي نفس السؤال لكن فيه اختلاف ببعض النقاط هل ياثر هذا على الحل ؟؟

Write an email simulator that process mail at an average of 40 messages per minute. As messages are received, they are placed in a queue. For the simulation assume that the messages arrive at an average rate of 30 messages per minute. Remember, the message must arrive randomly, so you will need to use a random number generator to determine when messages are received.

Queues are commonly used in network systems. for example, e-mail is placed in queues while it is waiting to be sent and after it arrives at the recipients mailbox . A problem occurs, however, if the outgoing mail processor cannot sent one or more of the massages in the queue . for example , a message might not be sent because the recipients system is not available.

Write an e-mil simulator that processes mail at average of 40 massages per minute. As messages are received, they are placed in a queue. For the simulation , assume that the messages arrive at an average rate of 30 message per minute . Remember the massages must arrive randomly , so you will need to use a random number to determine when messages are received ( see "queue simulation" on page 231).

each minute , you can dequeue to 40 messages and send them .

assume that 25% of the messages in the queue cannot be sent in any processing cycle. again, you will need to use a random number to determine whether a given message can be sent . if it can't , put it back at the end of the queue ( enqueue it ) .

run the simulation for 24 hours , tracking the number of times each message had to be requeued . at the end of the simulation , print the statistics that show .

a. the total messages processed .

b. the average arrival rate .

c. the average number of message sent pre minute .

d.the average number of message in the queue in a minute .

e. the number of messages sent on the first attempt , the number sent on the second attempt and so forth.

f. the average number of times messages had to be requeued ( do not include the messages sent the first time in this average )

http://groups.google.com.sa/group/Cplusplusimamgroup

تفضلوا بالزيارة لقروبي :)

#14

طيب هل ينفع ان اجعل عدد الايميلات ثابت ؟؟

const int max_email=40;

password123 كتب:

يعني تقنيا حتى تجاوبي على السؤال انتي لست محتاجة تكتبين ايميل بالكامل

تقنيا ممكن ترمزي لكل ايميل برقم موحد.... لكن اسالي الدكتور حتى تتاكدي... لانه حسب المثال مافرقت من منظور الqueue اذا تم التعامل مع ايميل حقيقي ام فقط رقم موحد

بالنسبة له النقطة انا افكر ان اخليها الايميلات كعدد لان لم يحدد لها طريقة معينة

int emailNum ;

http://groups.google.com.sa/group/Cplusplusimamgroup

تفضلوا بالزيارة لقروبي :)

#15
طموحي كبير كتب:

طيب هل ينفع ان اجعل عدد الايميلات ثابت ؟؟

const int max_email=40;

طبعاً اكيد لأن العدد 40 بالمشكلة هو ثابت أصلاً

هو عبارة عن الـ average لعدد الرسايل لكل ادقيقة

أطيب المُنى

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#16
طموحي كبير كتب:

Queues are commonly used in network systems. for example, e-mail is placed in queues while it is waiting to be sent and after it arrives at the recipients mailbox . A problem occurs, however, if the outgoing mail processor cannot sent one or more of the massages in the queue . for example , a message might not be sent because the recipients system is not available.

Write an e-mil simulator that processes mail at average of 40 massages per minute. As messages are received, they are placed in a queue. For the simulation , assume that the messages arrive at an average rate of 30 message per minute . Remember the massages must arrive randomly , so you will need to use a random number to determine when messages are received ( see "queue simulation" on page 231).

Queue <int> obj1 ;
	email obj ;



	obj.arriveTime = rand () / 100 ;

قالت الاستاذه ان نعمل مثل هذه الطريقة لكن ما اتحظت لي فكرة القسمة

وقالت نقسم على اي عدد !!

وهذه الفقرة هل فقط استفيد من ناحية اعرف وقت الوصول بس !! و اخنزنها بالاوبجكيت الخاص بكلاس الايميل

ارجو التوضيح بارك الله فيكم

مبدائيا هذا الكلاس الخاص بالايميل

#include <iostream>
#include "queue.h" // ADT Queue
#include <iomanip>
#include <cstdlib> // for rand
using namespace std ;


const int max_email=40;

//==========================
class email
{ 

     int emailNum ;
    int time_of_arrival ;
   int time_sent ;

};

تم تعديل هذه المشاركة بواسطة طموحي كبير في 26 مايو 2011 في 22:23

http://groups.google.com.sa/group/Cplusplusimamgroup

تفضلوا بالزيارة لقروبي :)

#17

صحيح عندي سؤال مهم نستخدم القسمة أم باقي القسمة ؟

وما الهدف و الفرق ؟

سؤال الخاص بالراندم

:wacko:

password123 كتب:

كل الذي يحصل: تخيلي لديكي ايميلات ستدخليهم في queue وثم تخرجيهم بنسبة معينة

بعضهم تخرجيهم ك drop

وبعضهم تخرجيهم ك sent

والبعض يصبح له requeue (يدخل في الطابور من جديد)

وثم تطبعي الاحصائيات

اختلف مع محمد في:

for(int i = 0 ; i<rand ; i++ )

هذا لا يعني شيء

طيب لو كان الحل بهذه الطريقة مع تحدد عدد معين للرسائل وهو 40

ما ارايك ؟

for(int i=0; i<random_email; i++)
    {
       random_email=(rand()%40)+1;
     cout << random_email << endl;
    }

http://groups.google.com.sa/group/Cplusplusimamgroup

تفضلوا بالزيارة لقروبي :)

#18

ارجو مساعدتكم فقلد تعبت نفسيا من هذا السؤال

واذا عندكم امثلة مشابة في استخدام الراندم و المحاكاة دلوني عليها

فرج الله كربكم :(

http://groups.google.com.sa/group/Cplusplusimamgroup

تفضلوا بالزيارة لقروبي :)

#19

انت بهذه الطريقة تستخدمين اعضاء المنتدى ك human_compiler_linker

ممكن تكتبي الكود بنفسك وتنظري النتيجة.. ومش نهاية العالم لو حصلت على error او اثنين

for(int i=0; i<random_email; i++)
    {
       random_email=(rand()%40)+1;
     cout << random_email << endl;
    }

لن يفي بالغرض لانه:

* العدد 40 لازم ينقص كل مرة تقومين ب send و drop للإيميلات

* الloop condition يجب ان يكون اصغر من "عدد الايميلات" الموجودة في الqueue وليس random_email

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

#20

اضافة: الكلام هذا كله على فرضية ان الدكتورة مبسوطة على شرح حورية: ان يكون عدد الايميلات في queue ثابت وهو 40

لكن الواقع يقول ان 40 هو فقط rate.. يعني 40 ايميل في الدقيقة.. والذي يعادل 0.7 ايميل في الثانية..

يعني في كل 2 ثانية ممكن يدخل ايميل في الqueue

ولذا هذا ليس عدد الايميلات في queue... لذا عدد الايميلات في queue غير ثابت... واي بني آدم مصحصح يجب ان يعرف هذا

وبما ان هذا simulation فممكن في كل round تقومي بافتراض ان الوقت يزيد بثانية مثلا

وكلما يزيد الوقت ب 2 ثانية تضيفي ايميل زيادة في الqueue

وهنا السؤال ناقص، لانه ايضا يجب ان يكون هناك حد أقصى للqueue... يعني اذا كان حجم الqueue 100 كحد اقصى مثلا

واذا زاد عدد الايميلات عن 100 يحدث شيء، مثلا drop لاي ايميل جديد حتى يتم افضاء مساحة كافية

لذا الاسلوب الصحيح في الجواب على السؤال هو بزيادة الوقت في كل round بطريقة معينة، وثم اضافة ايميل في queue

وبعد عدد معين من الثواني او الدقائق الافتراضية، يتم انهاء الsimulation وعرض النتائج

لكن اذا كانت الدكتورة غبية وتريد تدخل اشياء مالها معنى وتمشي الامور على هواها

فلا استغرب لماذا الطالب مشتت ولا يعرف اين يذهب.. لان الدكتور يتعارض كلامه عما يريد

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

#21

شكرا لكم جميعا

الله يجزاكم كل خير

طيب هذه الفقرة

عجزت اعرف معادلة حسابها

average number of message sent pre minute

http://groups.google.com.sa/group/Cplusplusimamgroup

تفضلوا بالزيارة لقروبي :)

#22

يعني اذا السميوليشن شغال مدة 10 دقائق، تحسبي عدد الايميلات المرسلة في كل دقيقة

وبعدها تحسبي المتوسط الحسابي لهم.

يعني تجمعي عدد جميع الايميلات المرسلة في 10 دقائق وتقسميهم على 10

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

#23

الله يجزاك كل خير

عندي مشكلة في استدعاء الفانكشن

print ( obj4) ;

void print ( simstats obj4 ) {}

ما ادري عشان هو اوبجكيت ولا لا ؟

على فكرة simstats يعتبر كلاس

والفانكشن عامة ما هي خاصة بكلاس معين

:)

تم تعديل هذه المشاركة بواسطة طموحي كبير في 28 مايو 2011 في 02:44

http://groups.google.com.sa/group/Cplusplusimamgroup

تفضلوا بالزيارة لقروبي :)

#24

لغز الكلمات المتقاطعة تحتوي على hints اكثر :ph34r:

ممكن تضعي الكود بالكامل + رسالة الخطأ

ملاحظة: يوجد

أعضاء في قائمة تجاهلي. لذا عدم ردي عليهم لا يدل على موافقتي الضمية لمحتويات مشاركاتهم.

sigsubway.png

مواضيع مشابهة