Yassine Einstein
منور يا برنس لو مش مسجل يشرفنا تسجيلك ولو مسجل يلا يا باشا الشله كلها مستنياك جوه

Yassine Einstein

أهلاً بمن أتانا بتحية وسلام
 
الرئيسيةاللهالتسجيلدخول

شاطر | 
 

  ••●| دليلك الشامل في المصفوفات |●•• { Pascal - Delphi } »

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل 
كاتب الموضوعرسالة




تاريخ التسجيل : 31/12/1969

مُساهمةموضوع: ••●| دليلك الشامل في المصفوفات |●•• { Pascal - Delphi } »   الخميس مارس 10, 2011 5:53 am





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




أهلا بكم اخواني الأعزاء في موضوعي لليوم في هذا المنتدى الرائع :)
-----------------------------
و هو هدية لكل الأعضاء و خاصة الإشراف ^^"

و الموضوع هو عبارة عن
المرجع الشامل في المصفوفات للغة الباسكال و الدلفي

ما هي المصفوفة ؟

المصفوفة array هي مجموعه من مواقع تخزين البيانات، والتي يشتمل كل موقع منها على نفس نوع البيانات . وكل موقع

يسمى "عنصر" في المصفوفة وكل موقع ( عنصر ) له قيمه معينة.

الإعلان عن المصفوفة :

يعلن عنها في قسم الإعلان عن المتغيرات ، بهذا الشكل :



Type هي احد أنواع المتغيرات

مثال :





يمكن إعلان المصفوفات بأي اسم كما تريد ، أيضا من الممكن إن تكون المصفوفات متغير عالمي أو محلي .

لنفترض أن لدينا مصفوفة مكونه من 20 عنصر



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

الإدخال. كما سيأتي بعد قليل.

لإدخال قيمه عن طريق جمله التعيين :



إذا العنصر الأول أصبح لديه قيمه وهي 3 ، والعنصر الثاني له القيمة5 ، وهكذا ....

مثال :




شرح البرنامج :

بعد تعريف المتغير X من النوع مصفوفة لها 30 عناصر من النوع الصحيح قمنا بتعيين العنصر الأول للقيمة 3

) يجب أن تكون من النوع الصحيح بسبب أننا عرفنا المصفوفة من النوع الصحيح (

وتعيين العنصر 5 للقيمة 2



الآن قمنا بطباعه قيمه متغير وهي حاصل ضرب قيمه العنصر الأول في قيمه العنصر الخامس أي ( 3*2 )

أخيرا قمنا بطباعه قيمة العنصر الأول في المصفوفة.


لإدخال القيم عن طريق جمله الإدخال :

بما أن هناك ثلاثين عنصر في المصفوفة، ونريد قراءتهم جميعا ، فإنه إن نقرأ عنصر عنصر هكذا يعتبر مضيعه للوقت .




لذلك وجب إستخدام تكرار بحيث نقوم بقراءة جميع القيم في سطرين فقط !





متى تكون هناك الحاجة للمصفوفات ؟

لنفترض أن لدينا قائمه من الأسماء لنفترض10 ، سيكون تعريفها بهذا الشكل :



أما بالمصفوفات سوف يكون الإعلان كالتالي :


المصفوفة الثنائية الأبعاد :

يكون الإعلان عنها بهذا الشكل :



ويتم إدخال القيم إليها هكذا :




أي أن في الصف الخامس والعمود الثاني ، القيمة تساوي 13

وهكذا في المصفوفة الثلاثية الأبعاد ، والرباعية ، إلى 100 بعد .كلها بنفس المفهوم !!

الذي تحتاجه انه في المصفوفة من البعد الثاني ستحتاج إلى حلقتين الأولى للبعد الأول والثانية للثاني.



الآن سنقوم بحل التطبيقات المشهورة الخاصة بالمصفوفات :

-------------------------------

1- مقلوب مصفوفة ( العمود يصبح سطر و السطر عمود ).



النتيجة ↓



أو بطريقة أخرى


النتيجة ↓



2- ترتيب الأعداد تصاعدياً أو تنازلياً بواسطة مصفوفة أحادية.


النتيجة ↓



يمكن تغيير علامة أكبر من (>) لترتيب العناصر تنازلياً





3- يجاد أكبر عنصر داخل مصفوفة ثنائية و موضعه داخلها.


النتيجة ↓





4- دمج مصفوفتين.


النتيجة ↓



كما أني قمت بعمل برنامج شامل جمعت به كل التظبيقات التي سبق ذكرها

هذه صورة له ↓


سورس ↓




Program xxxxx;
Uses crt;
Const N=4; M=6;
Var Mat : array [1..N,1..M] of Integer;
H : Char;
Procedure Meni;
Begin
Writeln ('1- Lire');
Writeln ('2- Affiche');
Writeln ('3- Grand');
Writeln ('4- Min');
Writeln ('5- Trier_i');
Writeln ('6- Trier_j');
Writeln ('7- Somme');
Writeln ('8- Trans');;
Writeln ('9- Exit');
End;
Procedure Lire;
Var i,j : Integer;
Begin
Writeln ('Entrez les elements de matrice');
For i:=1 To N Do
For j:=1 To M Do
Readln (Mat[i,j]);
End;
Procedure Affiche;
Var i,j : Integer;
Begin
For i:=1 To N Do
Begin
Write (' ');
For j:=1 To M Do
Write (Mat[i,j],' ');
Writeln (' ');
End;
End;
Procedure Grand;
Var i,j,A,B,Max : Integer;
Begin
Max := Mat[1,1];
A := 0; B :=0;
For i:=2 To N Do
For j:=2 To M Do
If (Mat[i,j] > Max) Then
Begin
Max := Mat[i,j];
A := i;
B := j;
End;
Writeln ('Le pluse Grand : ',Max);
Writeln ('(i,j) : (',A,',',B,')');
End;
Procedure Min;
Var i,j,A,B,Min : Integer;
Begin
Min := Mat[1,1];
A := 0; B := 0;
For i:=2 To N Do
For j:=2 To M Do
If (Mat[i,j] < Min) Then
Begin
Min := Mat[i,j];
A := i;
B := j;
End;
Writeln ('Le pluse Petit : ',Min);
Writeln ('(i,j) : (',A,',',B,')');
End;
Procedure Trier_i;
Var i,j,x,Temp : Integer;
Begin
For i:=1 To (N-1) Do
For j:=1 To M Do
For x:=i+1 To N Do
If (Mat[i,j] < Mat[x,j]) Then
Begin
Temp := Mat[i,j];
Mat[i,j] := Mat[x,j];
Mat[x,j] := Temp;
End;
For i:=1 To N Do
Begin
Write (' ');
For j:=1 To M Do
Write (Mat[i,j],' ');
Writeln (' ');
End;
End;
Procedure Trier_j;
Var i,j,y,Temp : Integer;
Begin
For i:=1 To N Do
For j:=1 To (M-1) Do
For y:=j+1 To M Do
If (Mat[i,j] < Mat[i,y]) Then
Begin
Temp := Mat[i,j];
Mat[i,j] := Mat[i,y];
Mat[i,y] := Temp;
End;
For i:=1 To N Do
Begin
Write (' ');
For j:=1 To M Do
Write (Mat[i,j],' ');
Writeln (' ');
End;
End;
Procedure Somme;
Var i,Somme : Integer;
Begin
Somme := 0;
For i:=1 To N Do
Somme := Somme + Mat[i,i];
Writeln ('La Somme : ',Somme);
End;
Procedure Trans;
Var i,j : Integer;
Begin
For i:=1 To M Do
Begin
Write (' ');
For j:=1 To N Do
Write (Mat[j,i],' ');
Writeln (' ');
End;
End;
Begin
Clrscr;
Repeat
Meni;
Write ('Donnez un choix corecte: ');
Readln (H);
Case H Of
'1' : Lire;
'2' : Affiche;
'3' : Grand;
'4' : Min;
'5' : Trier_i;
'6' : Trier_j;
'7' : Somme;
'8' : Trans;
'9' : Exit;
End;
Until (H = '9');
End.























100%










100%










100%










100%










100%











أي حرف في السورس غير مفهوم أن مجود للرد :)








نأتي الى الختام
أرجو أن يكون الموضوع قد أعجبكم و تكونو قد إستمتعتم و لو بالشيئ البسيط :)
الى اللقاء مع موضوع آخر
تحياتي لجميع المشرفين و جميع الأعضاء

أخوكم عبد الله بلخير - برهوم - المسيلة

الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
••●| دليلك الشامل في المصفوفات |●•• { Pascal - Delphi } »
استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
Yassine Einstein :: البرمجة والتطوير :: لغات البرمجة-
انتقل الى: