تاريخ التسجيل : 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%
|
أي حرف في السورس غير مفهوم أن مجود للرد :)نأتي الى الختام أرجو أن يكون الموضوع قد أعجبكم و تكونو قد إستمتعتم و لو بالشيئ البسيط :)الى اللقاء مع موضوع آخر تحياتي لجميع المشرفين و جميع الأعضاءأخوكم عبد الله بلخير - برهوم - المسيلة |
| |
|