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

سؤال بلغة سي 3 ايام لم استطع حله

بدأه حامي الحمى في 26 ديسمبر 2008 · 23 رد · 1,871 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخواني استمرارا لدراسة هذه اللغة الرائعة

واجهت سؤالاً 3 أيام كاملة وهو يحيّرني ولم اعرف كيف ابدأ به

السؤال كالتالي:

في احدى المتنزهات قاموا بتجديد الألعاب في المتنزه

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

قررت ادارة المتنزه ان تقوم ببرمجة برنامج الذي يقدّم للزوار معلومات عامة عن ساعات تشغيل الألعاب المختلفة في المتنزه.

زوار المتنزه يقوم بمساعدة هذا البرنامج ليقرروا في أي ايام يفضلون زيارة المتنزه حسب ساعات تشغيل الألعاب.

وايضا يمكن للزوار ان يحصلوا على المعلومات التي يحتاجونها عن أوقات تشغيل الألعاب والسعر يُحدّد حسب النشاط في المتنزّه في الساعات التي يريد الزائر زيارة المتنزه.

زمن افتتاح كل لعبة في المتنزه يتغير من اسبوع لآخر لكن معلوم ان الأوقات الممكنة لتشغيل الألعاب هي من يوم الأحد (A) حتى يوم الخميس (E) بين الساعات 10:00-18:00 (في الساعة 18:00 المتنزه يقفل لذلك المتنزه على الأكثر يكون مفتوح يوميا على الأكثر 8 ساعات).

معلومات اوقات تشغيل الألعاب المختلفة في المتنزّه في اسبوع معين يتم ادخالها عن طريق ملف تكست باسم facilitiesInfo.txt حسب المبنى التالي:

في السطر الأول يظهر رقم الذي يصف عدد الألعاب التي تفاصيلها ظاهرة في الملف.

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

المعطيات التي في كل سطر هي: رقم اللعبة (رفم كامل)، اليوم الاول في الاسبوع الذي فيه يتم افتتاح اللعبة، رقم الأيام على التوالي ابتداء من اليوم الاول ابتداء من يوم الافتتاح التي فيها يتم تشغيل اللعبة، سعر استخدام اللعبة (خلال ساعة واحدة) وساعات تشغيل اللعبة (ساعات تشغيل اللعبة متشابهة بكل الايام التي فيها يتم تشغيل اللعبة).

مثال:

لعبة رقم 113 (الذي يظهر في السطر الثاني في ملف التكست) يتم تشغيله في يوم الأحد (A)، لمدة أربعة ايام (بمعنى من يوم الأحد حتى الأربعاء A-E) ساعة استخدام اللعبة هو 15.5 دولار وساعات تشغيل اللعبة في هذه الأيام هو من الساعة 12:00 حتى الساعى 15:00 (اللعبة تعمل لمدة 3 ساعات).

على البرنامج ان يقوم بحساب وطباعة المعلومات التالية:

1) لكل يوم في الأسبوع يجب طباعة الساعات "الميتة" وعددها الكلي. ساعة ميتة هي ساعة لا يوجد أي لعبة تعمل.

2) في كل ساعة من ساعات افتتاح المتنزه يجب حساب وطباعة كم لعبة تعمل خلال نفس الساعة خلال الاسبوع، وما هو معدل سعر استعمال لعبة واحدة في نفس الساعة. السعر المعدل يتم طباعته فقط في حالة انه يوجد ألعاب تعمل في نفس الساعة.

3) اليوم الذي يعمل فيه اكبر عدد من الألعاب. اذا كان هناك اكثر من يوم يجب طباعة كل هذه الأيام.

4) الساعة، من بين كل الساعات التي يكون فيها المتنزه مفتوح، التي فيها اكبر عدد من الألعاب تعمل، ان كان اكثر من ساعة واحدة يجب طباعة كل هذه الساعات. ويجب طباعة عدد الألعاب التي تعمل في هذه الساعة، ولكل ساعة يجب طباعة هذا اليوم وطباعة الساعة.

5) على كل زائر ان يدخل ايام الأسبوع ومجال الساعات التي يريد فيها الزائر ان يزور المتنزّه وان يقوم البرنامج باخباره عن اليوم "من بين الأيام التي قام بإدخالها" الذي غير مفضّل ان يقوم بزيارة المتنزّه (هذا اليوم هو اليوم الذي فيه عدد الألعاب التي تعمل في الساعات التي قام الزائرة بإدخالها هي الأقل). يمكن ان نفرض انه يوجد يوم واحد كهذا فقط. لكي يقوم البرنامج بإعطاء الزائر هذه المعلومات يجب على الزائر ان يُدخل عدد الأيام التي يريد ان يقوم بفحصها، واسماء أيام الاسبوع ومجال ساعات الزيارة (مثال 14 10 يعني مجال الزيارة من الساعة العاشرة حتى الثانية ظهرا)

محلاظات:

يمكن ان نفرض ان عمليات الإدخال صحيحة

القراءة من الملف تُنفّذ مرة واحدة فقط.

يجب الانتباه: لا يوجد حاجة لحفظ المعطيات التي تم ادخالها من ملف التكست، انما يجب حفظ المعلومات التي تساعد على اعطاء المعلومات المهمة للزائر.

مثال:

مثال على ادخال معطيات عبر ملف تكست في المرفقات

مثال على تشغيل البرنامج:

Section 1:

*************

Number of dead days in the park during the week:

Day A: 11, 15, 16, 17, total = 4

Day B: 11, 15, total = 2

Day C: 11, 15, total =

2

Day D: 11, 15, total = 2

Day E: 10, 11, 12, 15, 16, total = 5

Section 2:

*************

Information about activities hours:

Hour 10: number of activate facilities: 4, average price: 13.50

Hour 11: number of activate facilities: 0

Hour 12: number of activate facilities: 4, average price: 15.50

Hour 13: number of activate facilities: 9, average price: 14.36

Hour 14: number of activate facilities: 9, average price: 14.36

Hour 15: number of activate facilities: 0

Hour 16: number of activate facilities: 3, average price: 9.56

Hour 17: number of activate facilities: 5, average price: 9.5

4

Section 3:

*************

Days with maximum activate facilities: C

Section 4:

*************

Maximum activate facilities: 3

Hours with maximum activate facilities:

Day C, hour 13-14

Day C, hour 14-15

Section 5:

*************

Enter number of days:

3

Enter details for day no. 1:

Enter day:

A

Enter hours range:

10 13

Enter details for day no. 2:

Enter day:

D

Enter hours range:

12 14

Enter details for day no. 3:

Enter day:

E

Enter hours range:

16 18

Within these days and hours, day E is the least worthy day to arrive

post-69369-1230242568_thumb.jpg

تم تعديل هذه المشاركة بواسطة حامي الحمى في 26 ديسمبر 2008 في 01:04

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#2

ولكن أين المشكلة !!

دولة الخلافة الاسلامية في المخاض الاخير وميلادها قريب

حزب التحرير : التزم الطريق الصحيح الشرعي الوحيد لاعادة دولة الخلافة الاسلامية .

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

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

#3

السلام عليكم

المشكلة اخي

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

وما قدرت احل السؤال لشكل بسيط

شاعر ان السؤال معقّد ومش قادر على فهمه :(

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#4

السلام عليكم

معقول يا اخوان ما في بيقدر يساعد ؟

على الاقل في البداية ...

:(

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#5

للأسف مااعرف الطريقه

ان شاء الله يفيدونك الاخوان

بالتوفيق

#6

بارك الله فيك اخي

ان شاء الله حد بيقدر يساعد :( !!!

السلام عليكم

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#7

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

خلينا نمشي بالنقاط وحدة وحدة

اول شيء, قم بكتابة الكود بحيث يقرأ محتويات الملف. هل تستطيع فعل ذلك؟

ثاني خطوة طويلة نوعا ما لكن. قم بعمل كلاس و سميه Game

هذا الكلاس يحتوي على التالي

GameNumber

StartDay

DurationInDays او المدة بالأيام

StartHour

EndHour

Price

و لما تخلص نحكي بالتفاصيل الأخرى

راكان الحنيطي

Be Open Source

opensource-550x4752.gif

#8

السلام عليكم

بارك الله فيك اخي الكريم

للأسف ما فهمت كيفية عملية قراءة محتويات ملف

لكن جربت هذا الشيء

وكتبت المتغيرات

لكن ما فهمت شو قصدك بعمل كلاس ؟!

هذا الكود الي كتبته حتى الآن :(

  1.  
  2. #include <stdio.h>
  3. #define INPUT "facilitiesInfo.txt"
  4.  
  5. void main()
  6. {
  7. int mNum;
  8. char sDay;
  9. int DuDays;
  10. int StartDay;
  11. int EndHour;
  12. int price;
  13.  
  14.  
  15. File *f;
  16. f=fopen("INPUT", "r");
  17.  
  18.  
  19. }
  20.  

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#9

السلام عليكم

شو يا جماعة، لهذي الدرجة السؤال صعب على المبرمجين ؟؟ !!!

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#10

السلام عليكم

للرفع بعد مرور 5 أيام دون مجيب :(

السلام عليكم

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#11

سلام عليكم

اولا انت تتكلم عن السي أو الس بلس بلس

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

ثالثا

من الواضح انه يريد الملف الخارجي لبيانات اللالعاب

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

(بالعربي عدد الاسطر اللي تحت -في الملف-)وهوالعداد ولنسميه facilities_count

من السطر الثاني نجد المعلومات عن الالعب كل سطر يوجد فيه لعبه واحده

اما المطلوب للطباعه فهي الموضحه من 1 الى 5

وهي ثوابت مثل

هذا في السكشن الاول

Number of dead days in the park during the week:

او

Day A: ....... Day E

او

total

وباقي الارقام متغيرات تستنتجها بمعادلات حسابية من المعطيات في الملف

هذا بالنسبة للسكشن الاول والباقي نفس الوضع

قبل عملية التكويد يجب فهم المطلوب إذا فهمت المطلوب الباقي ان شاء الله سهل.

ودمتم

متغيب

#12

السلام عليكم

بارك الله فيك اخي الكريم

العنوان موضح ان السؤال هو بلغة سي وليس سي ++

اضافة الى ذلك بعض الأسطر التي كتبتها عند محاولة تطبيق ما قاله لي الأخ الكريم قبلك توضح انني اقصد بلغة سي

والسؤال صحيح ليس باللغة العربية

انا ان شاء الله سأحاول اليوم البدء به بعد توضيحك للسؤال لي

وان شاء الله سأضع محاولتي لحل كل فرع من فروع السؤال واتمنى مساعدتكم الكريمة

بوركت اخي الكريم

السلام عليكم

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#13

السلام عليكــم ورحمـة الله وبركاتــه

اخواني الكرام

عجزت

ما عرفت ابدأ في البرنامج

على الأقل اعرف البداية

انا حاولت

لكن ما طلع معي شي وما عرفت اكمل لاني كمان اساساً مش عارف اذا بدأت بشكل صحيح او لا

يا ريت حد يرشدني ويقولي على الأقل البداية كيف

هذي تجربتي

  1.  
  2. #include <stdio.h>
  3. #define INPUT "facilitiesInfo.txt"
  4.  
  5. void main()
  6. {
  7. int mNum;
  8. char sDay;
  9. int DuDays;
  10. int StartDay;
  11. int EndHour;
  12. FILE *file;
  13. int price;
  14. int countA; // counter that count number sunday days
  15. int countB; // counter that count number monday days
  16. int countC; // counter that count number tuesday days
  17. int countD; // counter that count number wednesday days
  18. int countE; // counter that count number thursday days
  19. int i;
  20. int j;
  21. int file[ROW][COL];
  22.  
  23.  
  24. file=fopen(INPUT, "r");
  25. if (file==NULL)
  26. printf("File not Open!n");
  27. else
  28.  
  29. {
  30. for (i=0;i<1; )
  31. for (j=0;j<COL;j++)
  32. fscanf(file,"%d", &file[0][j]);
  33. }
  34. }
  35.  

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#14

بصراحة انا ماقرأتش السؤال كله بس هو واضح ان هو كعرض معلومات

خليكـ معآيا

طبعا شرحنا كله فى السى مش فى السى بلس بلس

الطريقة الأولى " الأقصر و الأصعب"

انت بتفتح ملفـ file و بتحط فيه بياناتكـ

ثانياً بتعرف الملف فى البرنامج بتاعكـ على ان هو read و تبتدى تاخذ منه المعلوماتـ "طبعا لحد هنا تمام"

و بترتب معلوماتكـ دى على اى شكل انت عاوزه,,,,

الطريقة الثانية " الأسهل و الاطول"

زى ما فيه اخ من الاخوان اللى ردوا قالكـ تفتح كلاسـ بس هو بيتكلم على السى بلاس بلاس لكن هى = الـ struct فى السى

انت فى السى هتفتح struct

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

وفى كل استراكت المتغيرات بتاعتكـ هتبقى int time و char day[i حيثـ ان الـ i ده عدد انت اللى بتحدده

ان شاء الله اكون قدرت افتحلك بدايات البرنامج

اى مساعده ضيفنى

des.aaser@hawamail.com

#15

السلام عليكم

بارك الله فيك اخي الكريم

المشكلة هي في البداية

لانه بتوقع لازم يكون حسب مصفوفة ثنائبة الأبعاد

لكن مش عارف كيف اعرف المصفوفة

حسب int ولا char

لانها بتحتوي على ارقام وكمان أحرف (الأحرف من A-E تمثّل ايام من احد حتى الخميس)

ثاني امر هو اني كيف ممكن افحص كل المصفوفة كمان بسبب ان المصفوفة مش كلها من نفس النوع ؟؟

وانا قمت باضافتك اخي من بعد اذنك

بارك الله فيك

السلام عليكم

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#16

نتفاهم على الميل انهارده ان شاء الله

بالتوفيق

#17

أعتقد ان المشكلة لديك فقط في قراءة الملف بشكل صحيح واستخدام المعلومات.

الكود التالي يحوي دالة عملها فقط قراءة السطر الاول من أجل معرفة عدد الصفوف.

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

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. typedef struct information_type
  4. {
  5. int GameNumber;
  6. char StartDay;
  7. int DurationInDays ;
  8. float Price;
  9. int StartHour;
  10. int EndHour;
  11. } information;
  12. int m_size()
  13. {
  14. int tmp;
  15. FILE *file=fopen("facilitiesInfo.txt","r");
  16. fscanf(file,"%i",&tmp);
  17. return tmp;
  18. fclose(file);
  19. }
  20.  
  21.  
  22. int main ( void )
  23. {
  24. information *info;
  25. unsigned int n=99999;
  26. int i;
  27. FILE * file=fopen("facilitiesInfo.txt","r");
  28. info=(information*)malloc(m_size()*sizeof(information));
  29.  
  30. while(!feof(file)){
  31. if(n==99999)
  32. {
  33. fseek(file,1,SEEK_CUR);
  34. n=0;
  35. }
  36. else
  37. {
  38.  
  39. fscanf(file,"%i %c %i %f %i %i",&info[n].GameNumber,&info[n].StartDay,
  40. &info[n].DurationInDays,&info[n].Price,&info[n].StartHour,&info[n].EndHour);
  41. n++;
  42. }
  43.  
  44. }fclose(file);
  45. for(i=0;i<m_size();i++)
  46. {
  47. printf("%i %c %i %4.2f %i %i n",info[i].GameNumber,info[i].StartDay,info[i].DurationInDays,
  48. info[i].Price,info[i].StartHour,info[i].EndHour);
  49. }
  50.  
  51. free(info);
  52.  
  53. return 0;
  54. }
  55.  

tvquran_6.gif

#18

اخوى ماظن ان هو راح يفيده

لانه عاوز يعملها بالمصفوفات (array)

لكن الأسهل ليه طبعا الـ structures

لانه مش هينفع يعرف مصفوفة ثنائية الابعاد باكتر من data type

تم تعديل هذه المشاركة بواسطة eg.prog في 1 يناير 2009 في 21:48

#19

حقيقة لا اعلم ماذا يريد بالضبط لكن هناك دائما في السي عدة طرق للحل.

الآن توفر لديه مصفوفة من info يطلبها بلوب ويقراء كيف ماشاء.

وان اراد مصفوفة يعدل فقط في الكود.

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

tvquran_6.gif

#20

الحل الوحيد ان هو يعملها بـ struct

#21

السلام عليكم

بارك الله فيكم اخواني

انا عملتها بطريقة ثانية

والحمد لله نجحت معي حتى الآن

وقمت بعملها حسب المصفوفات فقط

والأن انا في الفرع الرابع من السؤال

لكني لم استطع عمل المطلوب

أي ان يكون العرض كهذا

Section 4:

*************

Maximum activate facilities: 3

Hours with maximum activate facilities:

Day C, hour 13-14

Day C, hour 14-15

السطر الأول قمت بعمله وهو عدد الألعاب التي تعمل في نفس الوقت

لكني لم استطع ان اطبع القسم الثاني وهو لكل ساعة يجب طباعة اليوم في الاسبوع وكذلك الساعة

أي هذا السطر كما في المثال:

Day C, hour 13-14

Day C, hour 14-15

لو حت رمز لحله

انا جربت اعمله عن طريق تكرار while لكنه طبع لي فقط السطر الأول

Day C, hour 13-14

واخذ يكررها بشكل لا نهائي

بارك الله فيكم

السلام عليكم

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#22

اخوى انا انتظرتك على الميل

#23

السلام عليكم

بارك الله فيك اخي

انا اليوم موجود على المسن ان شاء الله

واسف لاني امبارح ما قدرت ادخل

جزيتم خيرا اخواني

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

السلام عليكم

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

#24

السلام عليكم

الحمد لله قمت بمعرفة الطريقة

جزيتم خيرا

السلام عليكم

تعب الجسد

ونعيم الروح

جسد يمشي فوق الأرض

وروح ترفرف حول العرش

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