القائمة الرئيسية

الصفحات

المفردات الرئيسية ++C

1. المبادئ الأساسية والمتغيرات والجمل الشرطية والحلقات في ++C.

2. المصفوفات

Array. 3. الدوال والإجراءات Function and procedure.

.4السجلات Structures  .

5. المؤشرات . Pointers

.6الملفات . Files

.7مقدمة عن (. Object Oriented Prog(OOP 

المفردات التفصيلية :

1. مراجعة المبادئ الأساسية والمتغيرات والجمل الشرطية والحلقات في ++C.

·       المتغيرات (أنواع - التصريح  -الإسناد -  شروط التعريف)

·       الأدوات المستعملة (حسابية-  الزيادة والنقصان - منطقية - علائقي )

·       أولوية العمليات الحسابية - الثوابت الرمزية. التعليقات أساليب الإدخال (cin) الإخراج(cout)  

·       . جمل التحكم الشرطية  )?( if- Switch-  الحلقات ( for – do – while ) .

2. المصفوفات:

·       . أنوع المصفوفات - تعريف - إعطاء قيم ابتدئيه - الوصول الي موقع محدد۔

·       طباعة محتويات المصفوفات - إدخال قيم من لوحة المفاتيح - عمليات على المصفوفات (جمع - طرح - معدل - اكبر....) -

·       ترتيب المصفوفات - البحث في المصفوفات ..

3. الدوال والإجراءات:

·       فؤاد الدوال والإجراءات  -أنوع الدوال والإجراءات - قواعد مجال الرؤية .

4. السجلات:

·       . تعريف والتصريح عن السجلات - سجلات مصفوفات .

 5. المؤشرات:

·       المؤشرات كعناوين - المتغيرات المؤشرات - عمليات المؤشر الحسابية. مؤشرات المصفوفات. .

.6 الملفات:

·       دوال الإدخال۔ دوال الطباعة - دوال الإغلاق والفتح.

7. مقدمة عن (Object Oriented Programming (OOP

·       تعريف والتصريح عن Class - تعريف مصفوفة Class .

 

#include<iostream>

;using namespace std

 void main()

{

جسم البرنامج

}

 

الدرس الأول :

• المتغيرات (أنواع -  شروط تعريف المتغيرات - التصريح - الإسناد) :

·       تعريف المتغيرات :

·       أنواع المتغيرات :

·       شروط تعريف المتغيرات :

·       التصريح (الإعلان):

·       الإسناد :

·       علائقي:

• الأدوات المستعملة (حسابية - الزيادة والنقصان- منطقية - علائقي):

§      حسابية:

§       الزيادة والنقصان :

§       منطقية :

§       أولية العمليات الحسابية :

§       . الثوابت الرمزية:

§   التعليقات أساليب الإدخال cin :

§       أساليب الإخراج cout:

·       جمل التحكم الشرطية ( ? -  .(if – switch

·      الحلقات (  .( for - do- while

 

   if, if...else, switch, while, do...while or for

       if statement (single selection)

       if...else statement (double selection)

switch statement (multipleselection            

       while statemen

     do...while statement

................…………………………………………………………………………………………………………

      for statement

 for(initialization; loop Continuation Condition; increment)           

{           

Statement

}         

…………………………………………………………………………………………………................

-       

for (int i = x; i <= 4* * *y; j += y / x)

…………………………………………………………………………………………………................

;long x,y

; x=y=1

 for(int j =x; j <= 4 * x + y; j += y 1 x)

;" " >> >>cout 

Result : 1 2 3 4

…………………………………………………………………………………………………………….................

for ( int j = 2;j <= 80; j += 5 )

…………………………………………………………………………………………………………….................

a. Vary the control variable from 1 to 100 in increments of 1.

 b. for ( int i = 1; i <= 100; i++)

c. Vary the control variable from 100 down to 1 in increments of -1 (that is, decrements of 1).

 d. for (int i = 100; i >= 1; i--)

e. Vary the control variable from 7 to 77 in steps of 7 

f. for (int i = 7; i <= 77; i += 7 )

2 g. Vary the control variable from 20 down to 2 in steps of

 h. for( int i = 20; i >= 2; i -= 2 )

i. Vary the control variable over the following sequence of values: 2, 5, 8, 11, 14, 17, 20

 j. for ( int i = 2; i <= 20; i += 3 )

k. Vary the control variable over the following sequence of values

99, 88, 77, 66,55, 44, 33, 22, 11, 0
 for ( int i = 99; i >= 0; i -= 11 )

……………………………………………………………………………………………………………

while ( condition )

…………………………………………………………………………………………………………….................

do

statement

;while ( condition )

…………………………………………………………………………………………………………….................


Do

{

statement

}

; while ( condition )

…………………………………………………………………………………………………………….................

;initialization

 while ( loop Continuation Condition )

{

statement

;increment

}

…………………………………………………………………………………………………………….................

if ( grade >= 60 )

cout << " Passed ";

…………………………………………………………………………………………………………….................

if ( grade >= 60 )

cout<< "Passed";

else cout << "Failed" ;

…………………………………………………………………………………………………………….................

cout << (grade >= 60 ? "Passed" : "Failed" );

…………………………………………………………………………………………………………….................

if ( studentGrade >= 90 )

                                            //90 and above gets "A"

 cout << "A";

 else

         if ( studentGrade >= 80 )

                    // 80-89 gets "B"

cout << "B";

 else

    if ( studentGrade >= 70 )

                   // 70-79 gets "C"

cout << "C";

  else

      if ( studentGrade >= 60 )

           // 60-69 gets "D"

 cout « "D";

 else

     // less than 60 gets "F"

 cout << "F";

…………………………………………………………………………………………………………….................

if ( studentGrade >= 90 )

            // 90 and above gets "A"

cout << "A";

 else if ( studentGrade >= 80 )

           // 80-89 gets "B"

 cout << "B";

else if ( studentGrade >= 70 )

          // 70-79 gets "C"

 cout << "C";

 else if ( studentGrade >= 60 )

            // 60-69 gets "D"

cout << "D";

else

            // less than 60 gets "F"

cout << "F";

…………………………………………………………………………………………………………….................

if( x > 5 )

       if ( y > 5 )

      cout << "x and y are > 5";

    else

      cout << "x is <= 5";

…………………………………………………………………………………………………………….................

if ( x > 5)

{

   If( y > 5 )

                cout << "x and y are > 5";

}

else

   cout << "x is <= 5";

…………………………………………………………………………………………………………….................

if ( studentGrade >= 60 )

    cout << "Passed. \n";

 else

{

   cout << "Failed. \n";

   cout<<"You must take this course again. \n";

}

…………………………………………………………………………………………………………….................

for ( count = 1; count <= 10; count++ )

                 // loop 10 times

{

 if ( count == 5 )

 break;

                                       // break loop only if x is 5

 cout << count << " ";

}

                 // end for

…………………………………………………………………………………………………………….................

for (int count = 1; count <= 10;count++ )

                 // loop 10 times

{

if ( count == 5 )

                                      // if count is 5,

 continue;                     // skip remaining code in loop

cout « count « " ";

}

                                      // end for

…………………………………………………………………………………………………………….................

int d;

cin>>d;

switch (d)

{

case 1:

           cout<<"sen"<<endl;

     break;

case 2:

           cout<<"MAD"<<endl;

           break;

}

…………………………………………………………………………………………………………….................

int row = 10;

                                        //initialize row

 int column;

                                       // declare column

while ( row >= 1 )

                 // loop until row < 1

{

   column = 1;

  // set column to 1 as iteration begins

while ( column <= 10 )

                                    // loop 10 times

{

   cout << ( row % 2 ? "<" :">" );

                                   // output

                                  column++;

                                  // increment column

}

                                 // end inner while

row--;

                                // decrement row

cout << endl;

                // begin new output line

}

               // end outer while التنفيذ

<<<<<<<<<< 

 >>>>>>>>>>

<<<<<<<<<< 

>>>>>>>>>>

<<<<<<<<<< 

>>>>>>>>>>

<<<<<<<<<< 

 >>>>>>>>>>

 <<<<<<<<<<

>>>>>>>>>>

……………………………………………………………………………………………………………................

int count = 1;

               // initialize count

      while ( count <= 10 )

                                 // loop 10 times

                    {

                               // output line of text

 cout<< (count%2?"****":"++++++++")<< endl;

                    count++;

                               // increment count

                    }

                              // end while التنفيذ

****

++++++++

 ****

++++++++

****

++++++++

 ****

 ++++++++

 ****

++++++++

……………………………………………………………………………………………………………................

for ( int i = 1; i <= 5; i++ )

          {

    for ( int j = 1; j <= 3; j++ )

      {

        for ( int k = 1; k <= 4; k++ )

        cout << '*';

        cout << endl;

      }

                               // end inner for

     cout << endl;

}

              // end outer for

التنفيذ

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

……………………………………………………………………………………………………………................

int x   // declare x

int y;  // declare y

 cout<<"Enter two integers in the range 1-20: ";

       cin >> x >> y;

             // read values for x and y

          for (int i = 1; i <= y; i++)

             // count from 1 to y

{

   for (int j = 1; j <= x; j++)

              // count from 1 to x

           cout << '*';

                               // output @

                         cout << endl;

             // begin new line

}

التنفيذ

*****

*****

*****

*****

*****

……………………………………………………………………………………………………………................

for (int x = 19; x >= 1; x -= 2 )

cout << x << endl;

التنفيذ

19

17

15

13

11

9

7

5

3

1

……………………………………………………………………………………………………………................

for (int x = 24; x >= 1; x-- )

    cout << x << endl;

التنفيذ

24

23

22

21

20

.

.

1

……………………………………………………………………………………………………………................

for (int x = 1; x <= 20; x++ )

{

 cout << x;

  if ( x % 5 == 0 )

     cout << endl;

 else

    cout << '\t';

}

التنفيذ

1          2          3          4          5

6          7          8          9          10

11        12        13        14        15

16        17        18        19        20

……………………………………………………………………………………………………………................

cout << "Logical AND (&&)"

<<"\nfalse && false: "<< ( false && false)

<<"\nfalse && true : "<< ( false && true)

<< "\ntrue && false: "<< ( true && false )

<< "\ntrue && true:  "<< ( true && true)

<< "\n\n";

التنفيذ

false && false:0

false && true: 0

true && false: 0

true && true:  1

……………………………………………………………………………………………………………................

int x,y;

      cout<<"insert secon";

      cin>>x;

      cout<<4*x*x+3*x-4<<endl;

برنامج لابجاد قيمة //

 4x2 + 3x-4

……………………………………………………………………………………………………………................

-اكتب برنامج يعمل علي تحويل ثواني مدخلة الي مايقابلها بالثواني والدقائق والساعات:

int hour, mint,seco, temp, secon;

cout<<"insert secon";

 cin>>secon;

 seco=secon%60;

 temp=secon/60;

 mint=temp%60;

 hour=temp/60;

 cout<<"hour="<<hour<<"mint="<<mint<<"seco=" <<seco<<endl;

……………………………………………………………………………………………………………................

int i, j, n;

 cout<<"insert the number";

 cin>>n;

 for( i = 1 ; i <= n ; i++)

    {

    for( j = 1 ;j <= i ;j++)

           cout<<"*";

     cout<<endl;

  }

برنامج يقوم بطباعة (a)الموضح في الصفحة //

……………………………………………………………………………………………………………................

 

وضح الأخطاء في كل من الجمل البرمجية التالية:

1)

 For ( x = 100, x >= 1, x++ )

cout << x<< endl;

2)

for ( x =19;x >= 1; x += 2 )

cout<< x << endl;

3)

if ( age >=65 );

   cout<<"Age is greater than or equal to 65" << endl;

 else

   cout << "Age is less than 65 << endl";

4)

if ( age >=65 )

   cout<<"Age is greater than or equal to 65" << endl;

 else;

   cout << "Age is less than 65 «endl";

5)

       while ( y > 0)

{

                 cout << y «< endl;

                 y++;

}

……………………………………………………………………………………………………………................

وضح نتائج كل سطر في البرنامج التالي:

int i = 1, j = 2, k = 3, m =2;

cout<<(i==1)<<endl;

cout<<(j==3)<<endl;

cout<<(i>=1&&j<4)<<endl;

cout<<(m<=99&&k<m)<<endl;

cout<<(j>=i | |k==m)<<endl;

cout<<(k+m<j| |3-j>=k)<<endl;

cout<<(!m) <<endl;

cout<<(!(j-m)) <<endl;

cout<<(!(k>m)) <<endl;

……………………………………………………………………………………………………………................

وضح نتائج كل سطر في البرنامج التالي:

int x=2, y=2, a=2,b=2,g=2, j=2,i=2;

 cout<<(!( x < 5 ) && ! ( y >= 7))«< endl;

 cout<<(! (a == b ) || ! ( g != 5 ) << endl;

 cout<< (! (( x <= 8 ) && (y>4)))<< endl;

cout<< (! (( i > 4 ) || (j <= 6 )))<< endl;

برامج متنوعة مطلوبة:

2.      اكتب برنامج يعمل على تحويل وحدة القياس بایت الى مايقابلة (-(GB MB-KB والعكس .

3.  ا اكتب برنامج يعمل على أيجاد قيمة y من المعادلة y=5x2+3x-4

اكتب برنامج لأيجاد مساحة ومحيط الدائرة .

5.      اكتب برنامج لأيجاد حاصل ضرب ومعدل ثلاث قيم.

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

7.      اكتب برنامج لطباعة الكلمة ++C عشر مرات بدون استحدام الحلقات.

8.      اكتب برنامج لأيجاد الرقم الاكبر بين رقمين.  

9.      اكتب برنامج لأيجاد قيمة z حيث  Z=5x2+3X/Y بشرط ان  Y =>x

10.  اكتب برنامج لطباعة الارقام الفردية بين 55 و 35 .

11.  اكتب برنامج لطباعة الأرقام الزوجية بين 100و 2.

12.  اكتب برنامج لأيجاد مجموع الأرقام الزوجية بين 100و 2.

13.  اكتب برنامج لأيجاد مجموع الأعداد من 1 الى n   .

14.  اكتب برنامج لأيجاد العدد الأصغر بين ثلاثة اعداد .

15.   اكتب برنامج لقراءة عدد ثم أوجد الرقم الاكبر في العدد المدخل :مثال 54173 الرقم الاكبر هو 7 .

16.  اكتب برنامج لتحويل رقم عشري الى ثنائي .

17.   اكتب برنامج لقراءة عدد 1 الى 7 ثم طباعة اسم اليوم؟ مثال عند ادخال العدد 2يطبع الاحد؟ نفس البرنامج خاص بالاشهر مستخدم جمل switch .

18.   اكتب برنامج لمعرفة عدد الاعداد الزوجية من والفردية .

19.  




اكتب برامج لطباعة الأشكال السابقة كل شكل برنامج مستقل :

 الدرس السابق :

       if, if...else, switch,while, do...while or for

·      if statement (single selection)

·       if...else statement (double selection)

·       switch statement (multiple selection)

·      while statement

·       do...while statement

·       for statement


#include<iostream>

using namespace std;

 void main()

{

هنا يتم كتابة الكود

جسم البرنامج

 }

 

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

1) اكتب برنامج لطباعة الشكل:


#include<iostream>

 using namespace std;

 void main()

{

int i, j,n;

cout<<"insert n";

cin>>n;

 for (i=1;i<=n;i++)

    {

for (j=1;j<=i; j++)

           cout<<j<<" ";

 cout<<endl;

    }

}

……………………………………………………………………………………………………………...............

2) اكتب برنامج لطباعة الشكل:

int i, j,n;

cout<<"insert n";

 cin>>n;

 for (i=1;i<=n; i++)

{

       for (j=i;j>=1;j--)

         cout<<j<<" ";

cout<<endl;

}

……………………………………………………………………………………………………………...............

3) اكتب برنامج لطباعة الشكل:

int i, j,n;

cout<<"insert n";

cin>>n;

 for (i=n;i>=1;i--)

{

     for (j=1;j<=n;j++)

                  cout<<j<<" ";

    cout<<endl;

}

……………………………………………………………………………………………………………...............

 

4) اكتب برنامج لطباعة الشكل:

int i, j,n;

cout<<"insert n";

cin>>n;

 for (i=n;i>=1;i--)

{

     for (j=i;j<=n; j++)

cout<<j<<" ";

 cout<<endl;

}

……………………………………………………………………………………………………………...............

المصفوفات : Arrays

- سندرس في  هذا الدرس المفردات التالية :

1) تعريف المصفوفات، الاعلان عن المصفوفات.

 2) انواع المصفوفات.

3) إعطاء قيم ابتدائية

4) الوصول الى موقع محدد في المصفوفة عمود او صف.

 5) طباعة محتويات المصفوفة

 6) ادخال قيم من لوحة المفاتيح الى المصفوفة.

7)عمليات على المصفوفات مثلا بعض العمليات ( جمع مصفوفتين - ضرب -طرح۔ حساب معدل اكبر قيمة- ...الخ من العمليات).

8) ترتيب المصفوفات تصاعدية ،تنازليا .

9) البحث في المصفوفات

 

المصفوفة Arrays : هي مجموعة مرتبة من البيانات التي تحتوی على عدد ثابت من العناصر او غير ثابت . او مجموعة من البيانات التي تتشابها في النوع double , int , char , float ولها اسم مشترك.

- التصريح عن المصفوفة :

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

-اسم المصفوفة : وهو اسم نختاره مثلما نختار اسم أي متغير.

- عدد العناصر التي بداخلها.

- نوع البيانات المستخدمة فيها .

- Int c[12];//بعد واحد

- int b[[100],x[27]];// بعد واحد

- int array1[2][3];//بعدين

- int b[2][2];//بعدين

- انواع المصفوفات :

 1) مصفوفات أحادية البعد 2) مصفوفات متعددة الأبعاد (ثنائية - ثلاثية ....).

ملاحظة : ليس ارقام فقط يمكن أن نقوم بعمل مصفوفة من اسماء طلاب او غير ذلك .

-شكل بعض من المصفوفات رياضية :

• [4 34 56 10 77 51 93 30 552]

-ارقام ذات صف واحد وعدد من الأعمدة :

4

34

56

10

77

ارقام ذات عمود واحد وعدد من الصفوف:

                                    93              51


  بعدين مكونة من عمودين وصفين :                                      

                   5               30                      

 

 

 بعدين مكونة من عمودين وصفين                                             

  77    10    56 

                                                                                                                          30    93    51

بعدين مكونة من عمودين وصفين  

                                                                                                                                                        10    52     5

                                                                                                                                                        10    52     5   

                                                                                                                                                         10    52     5    

إعطاء قيم ابتدائية:

• int x[5]={44,55,66,88,90};

Int array1[2][3]={{11,22,3},{14,55,6}}; // بعدين

• x[1]= 55; • x[4]= 90;

x[1]=55;

•x[4]=90;

•array1[0][0]=11; // بعدين

الوصول الى موقع محدد في المصفوفة عمود او صف:

•cout<<x[1]<<endl<<x[4];

x[1]= 55;

• x[4]= x[1];

طباعة محتويات المصفوفة:

•cout<<x[1]<<endl<<x[4];

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

     cout<<x[i]<<endl;

       cout<<endl;

ادخال قيم من لوحة المفاتيح الى المصفوفة:

int a[5];

 for(int k=0;k<5;k++)

{

cout<<"insert elements array"<<endl;

 cin>>a[k];

 cout<<endl;

}

 

برامج: لمصفوفة البعد الواحد :

 1) هذا البرنامج يقوم بإسناد قيمة للمتغير i الى مصفوفة وإسناد مربع العداد i الى مصفوفة أخرى ثم طباعة محتويات المصفوفتين:

int x [4] , y [4];

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

{

x [i] =i;

 y[i] =i*i;

 cout<<endl<<x [i]<< "  " y [i]<<;

}

cout<<endl;

---------التنفيذ---------

0          0

1          1

4          2

9          3

……………………………………………………………………………………...........

2) هذا البرنامج يقوم بإعطاء قيم ابتدائية لمصفوفة ثم يقوم بطباعتها :

int a[5] ={100,70 ,50 ,70 ,80};

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

cout<<a[i]<<endl;

---------التنفيذ---------

100

70

50

70

80

……………………………………………………………………………………...........

3) هذا البرنامج يقوم بحساب وطباعة متوسط المرتبات واجمالي المرتبات ل5 خمسة موظفين حيث أعطيت المرتبات قیم ابتدائية :

 

int array1 [5] = {100 ,50 ,50 ,100 ,50};

int s=0;

 for (int a=0;a<5;a++)

 s=s+array1[a];

 float avg=s/5;

 cout<<avg<<endl<<s<<endl;

---------التنفيذ---------

350

……………………………………………………………………………………...........

 

4) هذا البرنامج يطلب من المستخدم إدخال مرتبات 10 عشرة موظفين ثم يقوم بحساب اجمالي وطباعة متوسط هذه الرواتب :

float salary[10];

float average;

average = 0.0;

for( int count=0; count<10 ; count++)

{

cout<<"please enter salary f employee :

"<<count+1 <<" ";

cin>>salary [count] ;

average += salary[count] ;

}

cout<<"average salary"<<average/10<<endl;

……………………………………………………………………………………...........

تعرفنا في الدرس السابق :

1) تعريف المصفوفات، الاعلان عن المصفوفات:

int c[12];

2) انواع المصفوفات المطلوب بعد واحد وثنائي البعد.

 

3) إعطاء قيم ابتدائية

int x[5]={44,55,66,88,90};

4 ) الوصول الى موقع محدد في المصفوفة عمود او صف:

x[4]= 90;

5) طباعة محتويات المصفوفة.

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

cout<<a[i]<<endl;

6 ) ادخال قيم من لوحة المفاتيح الى المصفوفة:

for( int count=0; count<10; count++)

cin>>salary[count];

……………………………………………………………………………………

1) ترتيب المصفوفات تصاعدية ،تنازلية .

2) عمليات على المصفوفات مثلا بعض العمليات ( جمع مصفوفتين - ضرب - طرح-اكبر قيمة ... الخ من العمليات).

3) البحث في المصفوفات.

ترتيب المصفوفة:

 هناك طرق عديدة لترتيب المصفوفات، سنكتفي هنا بشرح إحداها، وهي طريقة الفقاعة Bubble Sort، وسنحيل الطريقة الأخرى الأفضل والأسرع ( وهي طريقة الترتيب السريع Quick Sort ).

- ما هو ترتيب الفقاقيع هذا؟.. وهل لهذا علاقة بالصابون والمنظفات؟

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

- كمن فسر الماء بعد العسر بالماء!.. هل يبدو لك أنك أضفت لي جديدا؟

- الحكاية وما فيها أننا سنقارن قيمة كل خانة في المصفوفة بما يليها، فإذا كانت

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

- أعتقد أنني فهمت، ولكني ما زلت في حاجة لبعض الإيضاح.

- إذن فلنأخذ مثالا عمليات.



 افترض أن لدينا المصفوفة التالية:

 

سنبدأ بمقارنة الخانة الأولى بما يليها.. سنكتشف أن بها الرقم 5 وهو اكبر من الرقم  2 إذن فلا بد من مبادلتهما:

 

لاحظ أننا سنستمر في مقارنة الخانة الأولى بما يليها وكأن شيئا لم يكن.. الفارق الوحيد أنها صارت تحتوي على الرقم 2.. لحسن الحظ أنه أصغر من الرقم 6  والرقم 4 والرقم 3.

ننتقل الآن للخانة الثانية.. سنجد أن الرقم 5 أقل من الرقم 6، ولكنه أكبر من الرقم 4.. إذن فلا بد من "تعويم" الرقم 4 إلى أعلى:

 

وكما اعتدنا سنواصل باقي عملية المقارنة، ولكن بالأخذ في الاعتبار أن الخانة الثانية صارت تحتوي على الرقم4.. هنا سنجد أنه أكبر من الرقم 3 ، مما يعني حتمية مبادلتهما:



 

الآن نصل للخانة الثالثة، وفيها الرقم 6.. للأسف سنجده أكبر من الرقم 5  (لاحظ أن هذه هي المرة الثانية التي نقارن فيها هذين الرقمين.. إن هذا من عيوب هذه الطريقة، حيث يكون عدد المقارنات كبيرا.. الآن سنبادلهما:



 

وسنواصل المقارنة على الخانة الثالثة وفيها الرقم 5.. سنجد أنه أقل من الرقم 4. فلنقم بعمل اللازم:


نصل الآن لمقارنة الخانة الرابعة بما يليها.. سنجد فيها الرقم   6 اه هذه هي المرة الثالثة التي نقارنه فيها 5 اليس شيئا مملا

طبعا يجب تعويم الرقم 5 .

 

نصل الآن للخانة الأخيرة.. لم يعد هناك ما نقارنها به.. إذن فقد انتهت العملية.. وطبعا المصفوفة الآن مرتبة!..

 لاحظ أننا نستطيع الاستغناء عن مقارنة الخانة الأخيرة مع بعدها، لأنها بالفعل بلا فائدة، فلا توجد أي خانات بعدها .

وقبل أن تطلق أي اعتراض على هذه الطريقة وما بها من عيوب، يجب أن أحيطك علما بأن كتابة الكود لهذه الطريقة يعد أسهل ما يمكن، وهي الميزة الوحيدة في الموضوع!!

 تعالو نر هذا البرنامج:

 ۱) اكتب برنامج لقراءة مصفوفة أحادية مكونة من 5 عنصر ثم راتب عناصرها تصاعدية ثم أطبعها مرتبة :

   تعريف مصفوفة بعد واحد وحجز 20 موقع فيها :

int x [5];

int temp;

for( int count=0; count<5 ; count++)

{

cout<<"please enter x f elmen:"<<count+1

قراءة المصفوفة أي إدخال عناصر المصفوفة

cin>>x[count];

}

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

جملة تكرارية لكل خانة من خانات المصفوفة//

for( int j=i+1; j<5; j++)

جملة تكرارية لكل الخانات التالية للخانة الحالية //

if (x [i]>x [3])

temp=x[i];                                                                            // التبديل

x[i] =x [j];

 x[j]=temp;

}

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

طباعة عناصر المصفوفة //

cout<<x[i]<<endl;

……………………………………………………………………………………...........

 

عمليات على المصفوفات ذات بعد واحد:

 ۲) اكتب برنامج لقراءة مصفوفة أحادية مكونة من 20 عنصر ثم أطبعها بشكل معكوس :

int x [20];

for( int count=0; count<20 ; count++)

cout<<"please enter x f elmen :<<count+1 <<" ";

cin>>x[count];

}

for( int i=20; i>=0; i--)

cout<<x[i]<<endl;

……………………………………………………………………………………...........

3) اكتب برنامج لقراءة مصفوفتين أحادية مكونة كل منهما 15 عنصر ثم ادمج المصفوفتين بمصفوفة واحدة حجمها 30 :

int a[15] ,b[15],[30];

for( int x=0; x<15 ;x++)

cout<<"please enter a f elmen : "<<x+1 <<" ";

cin>>a[x];

cout<<"please enter b f elmen : "<<x+1 <<" ";

cin>b [a];

}

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

  {

if (i<15)

   c[i] =a [i];

else

c[i] =b [i-15];

}

for( int j=0; j<30 ;j++)

 cout<<c[j]<<"  ";

……………………………………………………………………………………...........

4) اكتب برنامج لقراءة مصفوفة أحادية مكونة من 15 عنصر ثم اوجد العنصر الأكبر من بين عناصر المصفوفة ثم أطبعها العنصر ؟ وظيفة الأصغر :

int myarray[15];

int max;

for(int x=0; x<15 ; x++)

{

cout<<"please enter y elmen: "<<x+1<<"   " ;

 cin>>myarray[x];

}

max=myarray[0];

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

if (myarray[i]>max)

max=myarray[i];

      cout<<max<<"    ";

……………………………………………………………………………………...........

5) اكتب برنامج إدخال مصفوفة أحادية ثم يوجد مجموع الإعداد الزوجية ومجموع الإعداد الفردية:

int a[40];

int n, i, s1, s2;

cout<<"\n insert n: ";

cin>>n;

for (i=0;i< n; i++)

{

cout<<"a["<<i<<"]=";

cin>>a [i];

}

s1=s2=0;

for( i=0; i< n; i++)

if (a [i] %2==0)

 s1+=a[i];

else

 s2+=a[i];

 cout<<"\nsum even element:"<<s1;

 cout<<"\nsum odd element:"<<s2<<"\n";

……………………………………………………………………………………...........

6) اكتب برنامج إدخال سلسله نصيه ثم يعيد طول السلسلة:

char s [256];

 int i,k;

 cout<<"\nINSERT STRING: \n";

gets (s);

 k=0;

 for (i=0;s[i] !='\0';i++)

k++;

cout<<"\nlength s:"<<k<<endl;

……………………………………………………………………………………...........

7) اكتب برنامج يقوم بجمع بين مصفوفتين (أي جمع عناصر المصفوفة a مع عناصر المصفوفة b وطباعة ناتج الجمع في مصفوفة :

int a[5] ={10 ,20 ,10 ,30 ,40};

int b [5] = { 40 ,30 ,40 ,20 ,10};

int c[5];

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

c[i] =a [i]+b [i];

cout<<"\nTHE ARRAY X+Y =\n";

cout<<"\n--------------------------\n";

for (int j=0; j< 5;j++)

cout<<c[j]<<"  ";

cout<<"\n--------------------------\n";

// التنفيذ

50 50 50 50 50

……………………………………………………………………………………...........

البحث في المصفوفات:

يوجد عدة طرق إحدى الطرق التقليدية كما يلي:

اکتب برنامج للبحث عن عنصر مدخل في مصفوفة أي هل العنصر موجود او غیر موجود ؟

int a[10] = {10, 30 ,22 ,12 ,40 , 66,80, 90,23,100};

int k,i;

cout<<"insert k";

cin>>k ;

int b=0;

for( i=0; (i<10) && (b==0);i++)

{

cout<<i<<" ";

 if (a [i] ==k) b++;

}

if (b==0)

  cout<<" not found ";

else

   cout<<" found ";

 cout<<"index <<i<<endl;

……………………………………………………………………………………...........

في الدرس السابق تم التعرف على :

1-عمليات على المصفوفات مثل بعض العمليات (جمع مصفوفتين – ضرب – طرح – اكبر قيمة ).

2- ترتيب المصفوفات( تصاعديا – تنازليا ).

3- البحث في المصفوفات .

المصفوفات ذات بعدين:

1) تعريف المصفوفات، الاعلان عن المصفوفات :

int b[ 2 ][ 2 ];

int array2[ 2 ][ 3 ];

……………………………………………………………………………………...........

2) الشكل الرياضي :

   بعدين

56     51    5

10     93    52

77     30    10

……………………………………………………………………………………...........

3) إعطاء قيم ابتدائية

int array1[2] [3] ={{1,2,3},{ 4, 5, 6 } };

……………………………………………………………………………………...........

4) الوصول الى موقع محدد في المصفوفة عمود او صف :

a[ 0 ][ 0 ] = 0;

a[ 0 ][ 1 ] = 0;

a[ 2 ][ 1 ] = a[ 2 ][ 3 ] = 0;

……………………………………………………………………………………...........

5) طباعة محتويات المصفوفة :

طريقة 1 :

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

{

for ( int j = 0;j < 3; j++ )

 cout << a[ i ][ j ] << ' ';

 cout << endl;

}

……………………………………………………………………………………...........

طريقة - هذه الطريقة تكون الطباعة بشكل مصفوفة ثنائية كم في كتاب الرياضيات :

طريقة 2:

const int arraySize = 3;

يمكن استخدام ثابت لابعاد المصفوفة //

int table[arraySize ] [arraySize];

cout << " [0] [1] [2] " << endl;

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

{

cout << '[' << i << "] ";

for (int j = 0; j < array Size; j++ )

cout <<'\t' « table[ i ][ j ] << " ";

cout << endl;

}

……………………………………………………………………………………...........

6) ادخال قيم من لوحة المفاتيح الى المصفوفة

const int arraySize = 3;

int table[arraySize ] [arraySize];

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

  {

        for ( int j = 0; j < arraySize; j++ )

               cout << "[" « i « "][ "<< j<< "]: ";

cin>>table[ i][j];

cout << endl;

     }

}

……………………………………………………………………………………...........

برامج : مثال 1: في أحدى الفصول الدراسية كانت نتائج ثلاثة طلاب كما هو موضح بالجدول التالي:


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

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

const int arraySize = 3;

int table [arraySize ] [arraySize];

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

 {

  for ( int j = 0; j < array Size; j++ )

   {

         cout << " [" << i<< "][ << j<< "]: ";

         cin>>tables[i][j];

         cout << endl;

       }

}

cout<< " [deg1] [deg2] [deg3]" << endl;

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

{

 cout << " [student " <<i+1 << "]: ";

 for (int j = 0; j < arraySize; j++ )

 cout<<"\t'<<table[ i ][ j ] << " ";

    cout << endl;

}

……………………………………………………………………………………...........

 

 

 

 

 

 

 


أنت الان في اول موضوع

تعليقات