النتائج 1 إلى 5 من 5

الموضوع: مسألة دراسية ...., عن المؤشرات

  1. #1
    التسجيل
    28-08-2008
    المشاركات
    10

    مسألة دراسية ...., عن المؤشرات

    السلام عليكم
    عمتم مساء اخوتي جميعا
    هذي اول مشاركة لي واتمنى انكم تفيدوني

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

    (برنامج محاكة:"بين السلحفاة والارنب")
    سوف نحاول في هذا التمرين تذكر احد القصص قصة السباق بين الارنب والسلحفاة
    وسوف نستخدم عملية توليد ارقام عشوائية لمحاكات السباق
    يبدأ السباق من المربع رقم 1 حتى المربع 70 حيث يوجد خط النهاية ويمثل كل مربع احد المواضع الممكنة التي يمكن اشغالها اثناء السباق.يجري السباق على سفح جبل مما يسبب انزلاق المتسابقين .
    يتضمن البرنامج ساعة تدق دقة واحدة كل ثانية ويجب تصحيح موضع كل متسابق عند كل دقة من دقات الساعة حسب القواعد التالية..
    السلحفاة مشي سريع 50% 3 مربعات الى اليمين
    \\ انزلاق 20% 6 مربعات الى اليسار
    \\ مشي بطئ 30% مربع واحد الى اليمين
    الارنب نوم 20% لا توجد اي حركة
    \\ قفزة كبيرة 20% 9 مربعات الى اليمين
    \\ انزلاق كبير 10% 12مربع الى اليسار
    \\ قفزة صغيرة 30% مربع واحد الى اليمين
    \\ انزلاق صغير 20% مبرعان الى اليسار

    ملاحظة: يبدأ السباق من اليسار الى اليمين اي ان اتجاة الحركة نحو الامام يتم نحو اليمين.
    استخدم متحولات لحفظ موضع كل مشترك بالسباق (تنحصر ارقام المواضع بين 1 و 70 )
    يبدأ كل حيوان من المربع واحد (نقطة البداية) وعندما ينزلق الى اليسار الى ما قبل المربع 1 فيتم اعادتة الى الوراء الى المربع واحد.
    قم بتوليد النسبة المئوية الموضحة في الجدول السابق بأستخدام مولد لااعداد العشوائية (i) المحصورة ضمن المجال
    كود:
    0>= i<=10
    فمن اجل السلفاة مثلا فأنها تقوم بتنفيذ مشي سريع عند توليد العدد
    كود:
    1<= i<=5
    وتفذ انزلاقا عند
    كود:
    6<= i<=7
    ومشيا بطيا عند
    كود:
    8<= i<=10
    وبي نفس الطريقة تتم معالجة حركة الارنب
    يبدأ السباق بعد طباعة العبارة التالية
    BANG!!!!!!
    ثم عند كل دقة من دقات الساعة (اي عند كل حلقة من حلقات التركرا) يتم طباعة سطر مؤلف من سبعين موضع
    علية حرف T للدلالة على موضع السلحفاة وحرف H موضع الارنب .يمكن احيانا اني يصل كل المتسابقين الى نفس الموضع عندها تقوم السلحفاة بضرب الارنب ويطبع

    كلمة OUCH في ذالك الموضع .تبقى بقية المواضع الاخرى التي ليس فيها t او H او OUCH (في حالة التعادل) فارغة.
    بعد طباعة السطر نحقق من احد الحيوانين قد وصل الى الموضع 70 او تجاوزة.اذا حصل ذاللك عندها يحدد البرنامج الفائز وتنتهي عملية المحاكاة ويطبع اسم الفائز

    طبعا ياشباب انا ابغى الفكررة فقط
    ويعطيكم الف عافية

  2. #2
    التسجيل
    03-08-2004
    الدولة
    تركيا
    المشاركات
    3,755

    رد: مسألة دراسية ...., عن المؤشرات

    وعليكم السلام والرحمة
    كنت انوي مساعدتك لكني هبطت لمن قرأت سي++ ( انا فقط vb )
    ان شاء الله تجد حلول

    رمضان كريم

  3. #3
    التسجيل
    20-03-2005
    المشاركات
    77

    رد: مسألة دراسية ...., عن المؤشرات

    سهله اخوي استخدم doubly linked list

    تقدر تتنقل فيه بسهوله ,,

    ما ادري وين المشكله فيه ,,

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

  4. #4
    التسجيل
    28-08-2008
    المشاركات
    10

    Thumbs up رد: مسألة دراسية ...., عن المؤشرات

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


    كود:
    #include <iostream>
        #include<conio.h>
        #include <time.h>
        using Namespace std;
         void wait ( int s )
        {
          clock_t end;
          end = clock () + s * CLOCKS_PER_SEC;
          while (clock() < end) {}
        }
    void  main() 
        {
             char *race_t[70];
             int num=0;
             int place_turtle=0;
             int place_rabit=0;
             for(int m=0;m<70;race_t[m++]=" ");
             race_t[70]='\0';
             int i;
             srand(time(0));
             cout<<"start the Game   \n";
             while(1)
             {
                 i =1+rand()%10;
                 
                 if (i>=1 && i<=5)
                 {
                     place_turtle+=3;
        
                 }
                 else if(i>=6 && i<=7)
                 {
                     place_turtle-=6;
                     if(place_turtle<0) place_turtle=0;
    
                     place_rabit-=12;
                     if(place_rabit<0) place_rabit=0;
                 }
                 else if (i>=8 && i<=10)
                 {
                     place_turtle+=1;
                     place_rabit+=9;
                 }
                 else if (i>=3 && i<=5)
                 {
                     place_rabit+=1;
                 }
                 else if (i>=1 && i<=2)
                 {
                     place_rabit-=2;
                     if (place_rabit<0) place_rabit=0;
                 }
    
                 if(place_rabit>=70) {cout<< "\n Rabit  win";break;}
    
                  else if(place_turtle>=70) {cout<<"\n Turtle win"; break;}
    
                else if (place_turtle == place_rabit)
                {
                    *(race_t + place_turtle)="OUCH";
                
                }
    
                else  
                {
                 *(race_t + place_turtle)="T"; 
                 *(race_t + place_rabit)="H";
                }
    
                for (int y = 0;y<70;y++)
                 cout<<*(race_t + y);
                cout<<endl<<endl;
                 
                 for(int m=0;m<70;*(race_t + m++)=" ");
                 wait(1);
                }
                 
            cout<<endl<<endl;
            system("pause");
             
            
         }

  5. #5
    التسجيل
    28-08-2008
    المشاركات
    10

    رد: مسألة دراسية ...., عن المؤشرات

    doubly linked lis
    ياليت توضح اخوي ..ما عرفت المقصد منها

ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •