المفردات الرئيسية ++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)
while statemen
do...while statement
................…………………………………………………………………………………………………………
for statement
for(initialization; loop Continuation
Condition; increment)
{
Statement
}
…………………………………………………………………………………………………................
-
…………………………………………………………………………………………………................
;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
……………………………………………………………………………………………………………
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 << (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;
cin>>n;
for (i=1;i<=n; i++)
{
for (j=i;j>=1;j--)
cout<<j<<" ";
cout<<endl;
}
……………………………………………………………………………………………………………...............
3) اكتب برنامج لطباعة الشكل:
cout<<"insert n";
cin>>n;
for (i=n;i>=1;i--)
{
for (j=1;j<=n;j++)
cout<<j<<" ";
cout<<endl;
}
……………………………………………………………………………………………………………...............
4) اكتب برنامج لطباعة الشكل:
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;
}
……………………………………………………………………………………...........













تعليقات
إرسال تعليق