منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
الدرس الحادي عشر ( 11 ) - - المصفوفات (نظرة مفصلة) الجزء الثاني (2) - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : الأقسام التعليمية - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=90)
+--- قسم : قسم دورات المنتدى (http://vb4arb.com/vb/forumdisplay.php?fid=113)
+---- قسم : دورة C++ (http://vb4arb.com/vb/forumdisplay.php?fid=135)
+---- الموضوع : الدرس الحادي عشر ( 11 ) - - المصفوفات (نظرة مفصلة) الجزء الثاني (2) (/showthread.php?tid=6507)



الدرس الحادي عشر ( 11 ) - - المصفوفات (نظرة مفصلة) الجزء الثاني (2) - RaggiTech - 19-10-12

كاتب الموضوع : lo2i

السلام عليكم ورحمة الله وبركاته

(( وماأوتيتم من العلم إلا قليلاً ))

-------------------------------------------------------------------------------------------------------------------------------
الدرس الحادي عشر ج(2) في دورة السي بلس بلس
-------------------------------------------------------------------------------------------------------------------------------


سنتعلم في هذا الدرس ان شاء الله :_

1- تعريف المصفوفة ونسب القيم لها اثناء تعريفها .
2- التعرف على كيفية تعبئة المصفوفات الديناميكية .
3- بعض التمارين مع جمل التكرار .

أولاً :- تعريف المصفوفة ونسب القيم لها اثناء تعريفها :-

إدخال القيم للمصفوفة يكون على نوعيين وهي اما إدخال القيم لها عند تعريف مصفوفة جديدة
او تركها للمستخدم ليقوم بتعبئتها ومن ثم يتم العمل على القيم التابعة لها لإخراج مجموعها مثلاً او متوسطها .
مثال على المصفوفات التي تضيف قيم لها عند تعريفها ..


كود :
[color=#000000][COLOR=#0000bb]int students_marks[/color][color=#007700][[/color][color=#0000bb]5[/color][color=#007700]] = { [/color][color=#0000bb]7 [/color][color=#007700], [/color][color=#0000bb]3 [/color][color=#007700], [/color][color=#0000bb]9 [/color][color=#007700], [/color][color=#0000bb]10 [/color][color=#007700], [/color][color=#0000bb]0 [/color][COLOR=#007700]};  
[/COLOR][color=#0000bb][/color][/COLOR]


في الكود السابق قمنا بتعريف مصفوفة تحمل 5 عناصر
ملاحظة :- يبدأ العد من المصفوفة من الصفر
في المثال السابق هذا هو وضع الترقيم

0 1 2 3 4
قمنا بتسمية المصفوفة بـ
students_marks
ونمط المصفوفة رقم صحيح لأنها مسبوقة بـ int


على العموم عند كتابتك لهذا الكود ووضعه في البرنامج بهذا الشكل لن تستفيد منه شيئاً
لذا نريد العمل معها والتعديل فيها
بداية دعونا نقوم بطباعة جميع قيم هذه المصفوفة في الـ cmd (الشاشة السوداء)

قم بسمح كل شي مكتوب في البرنامج وقم بنسخ هذا الكود

كود :
[color=#000000][COLOR=#0000bb][/color][COLOR=#ff8000]#include "stdafx.h"
#include <iostream>
[/COLOR][color=#0000bb]using namespace std[/color][COLOR=#007700];
[/COLOR][color=#0000bb]int main[/color][COLOR=#007700]()
{
[/COLOR][color=#0000bb]int students_marks[/color][color=#007700][[/color][color=#0000bb]5[/color][color=#007700]] = { [/color][color=#0000bb]7 [/color][color=#007700], [/color][color=#0000bb]3 [/color][color=#007700], [/color][color=#0000bb]9 [/color][color=#007700], [/color][color=#0000bb]10 [/color][color=#007700], [/color][color=#0000bb]0 [/color][COLOR=#007700]};
[/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#dd0000]"The array values are\n\n"[/color][COLOR=#007700];
[/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#0000bb]students_marks[/color][color=#007700][[/color][color=#0000bb]0[/color][color=#007700]] << [/color][color=#0000bb]endl [/color][COLOR=#007700];
[/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#0000bb]students_marks[/color][color=#007700][[/color][color=#0000bb]1[/color][color=#007700]] << [/color][color=#0000bb]endl [/color][COLOR=#007700];
[/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#0000bb]students_marks[/color][color=#007700][[/color][color=#0000bb]2[/color][color=#007700]] << [/color][color=#0000bb]endl [/color][COLOR=#007700];
[/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#0000bb]students_marks[/color][color=#007700][[/color][color=#0000bb]3[/color][color=#007700]] << [/color][color=#0000bb]endl [/color][COLOR=#007700];
[/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#0000bb]students_marks[/color][color=#007700][[/color][color=#0000bb]4[/color][color=#007700]] << [/color][color=#0000bb]endl [/color][COLOR=#007700];
[/COLOR][color=#0000bb]cin[/color][color=#007700].[/color][color=#0000bb]get[/color][COLOR=#007700]();
return [/COLOR][color=#0000bb]0[/color][COLOR=#007700];
}  
[/COLOR][color=#0000bb][/color][/COLOR]

هذا الكود سوف يعطيك هذه الشاشة :-





نأتي الان لنضع نفس الكود ولكن بجملة تكرار for

نمسح كل شي ُكتب في البرنامج ونقوم بكتابة هذا الكود

كود :
[color=#000000][COLOR=#0000bb][/color][COLOR=#ff8000]#include "stdafx.h"
#include <iostream>
[/COLOR][color=#0000bb]using namespace std[/color][COLOR=#007700];
[/COLOR][color=#0000bb]int main[/color][COLOR=#007700]()
{
[/COLOR][color=#0000bb]int students_marks[/color][color=#007700][[/color][color=#0000bb]5[/color][color=#007700]] = { [/color][color=#0000bb]7 [/color][color=#007700], [/color][color=#0000bb]3 [/color][color=#007700], [/color][color=#0000bb]9 [/color][color=#007700], [/color][color=#0000bb]10 [/color][color=#007700], [/color][color=#0000bb]0 [/color][COLOR=#007700]};
[/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#dd0000]"The array values are\n\n"[/color][COLOR=#007700];
for ([/COLOR][color=#0000bb]int x [/color][color=#007700]= [/color][color=#0000bb]0 [/color][color=#007700]; [/color][color=#0000bb]x [/color][color=#007700]< [/color][color=#0000bb]5 [/color][color=#007700]; [/color][color=#0000bb]x[/color][COLOR=#007700]++){
[/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#0000bb]students_marks[/color][color=#007700][[/color][color=#0000bb]x[/color][color=#007700]] << [/color][color=#0000bb]endl[/color][COLOR=#007700];
};
[/COLOR][color=#0000bb]cin[/color][color=#007700].[/color][color=#0000bb]get[/color][COLOR=#007700]();
return [/COLOR][color=#0000bb]0[/color][COLOR=#007700];
}  
[/COLOR][color=#0000bb][/color][/COLOR]

كما تلاحطوا جملة التكرار أكثر سهولة وأناقة من الكود السابق
وستظهر لنا نفس الشاشة





وخصوصاً اذا كان عناصر المصفوفة كثيرة فمن الصعب طباعة كل عنصر على حدى
هنا تبرز مهمة جملة التكرار for

سوف نجرب نفس الكود مع جملة التكرار while

كود :
[color=#000000][COLOR=#0000bb][/color][COLOR=#ff8000]#include "stdafx.h"
#include <iostream>
[/COLOR][color=#0000bb]using namespace std[/color][COLOR=#007700];
[/COLOR][color=#0000bb]int main[/color][COLOR=#007700]()
{
[/COLOR][color=#0000bb]int students_marks[/color][color=#007700][[/color][color=#0000bb]5[/color][color=#007700]] = { [/color][color=#0000bb]7 [/color][color=#007700], [/color][color=#0000bb]3 [/color][color=#007700], [/color][color=#0000bb]9 [/color][color=#007700], [/color][color=#0000bb]10 [/color][color=#007700], [/color][color=#0000bb]0 [/color][COLOR=#007700]};
[/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#dd0000]"The array values are\n\n"[/color][COLOR=#007700];
[/COLOR][color=#0000bb]int i [/color][color=#007700]= [/color][color=#0000bb]0 [/color][COLOR=#007700];
do
{
[/COLOR][color=#0000bb]cout [/color][color=#007700]<< [/color][color=#0000bb]students_marks[/color][color=#007700][[/color][color=#0000bb]i[/color][color=#007700]] << [/color][color=#0000bb]endl[/color][COLOR=#007700];
[/COLOR][color=#0000bb]i[/color][COLOR=#007700]++;
}
while ([/COLOR][color=#0000bb]i [/color][color=#007700]< [/color][color=#0000bb]5[/color][COLOR=#007700]);
[/COLOR][color=#0000bb]cin[/color][color=#007700].[/color][color=#0000bb]get[/color][COLOR=#007700]();
return [/COLOR][color=#0000bb]0[/color][COLOR=#007700];
}  
[/COLOR][color=#0000bb][/color][/COLOR]

وسيظهر لنا ايضاً نفس الشاشة




التعامل مع جمل التكرار في غاية السهولة
ويمكنك ايضاً الرجوع لهذه الدروس

الدرس التاسع ( 9 ) : - جملة التكرار For وكيفية التعامل معها
الدرس العاشر ( 10 ) : - جملة التكرار Do While وكيفية التعامل معها
----------------------------
ثانياُ : تعبئة المصفوفات الديناميكية ذات الأبعاد الكثيرة

طريقة تعبئة المصفوفات العادية (ذات البعد الواحد) (الاستاتيكية)


كود :
[color=#000000][COLOR=#0000bb]int students_marks[/color][color=#007700][[/color][color=#0000bb]3[/color][COLOR=#007700]] ;
[/COLOR][COLOR=#ff8000]//fill the array
[/COLOR][color=#0000bb]students_marks[/color][color=#007700][[/color][color=#0000bb]0[/color][color=#007700]]=[/color][color=#0000bb]7[/color][COLOR=#007700];
[/COLOR][color=#0000bb]students_marks[/color][color=#007700][[/color][color=#0000bb]1[/color][color=#007700]]=[/color][color=#0000bb]4[/color][COLOR=#007700];
[/COLOR][color=#0000bb]students_marks[/color][color=#007700][[/color][color=#0000bb]2[/color][color=#007700]]=[/color][color=#0000bb]6[/color][COLOR=#007700];  
[/COLOR][color=#0000bb][/color][/COLOR]

في السطر الاول قمنا بتعريف المصفوفة التي تحتوي على 3 متغيرات باسم students_marks

طريقة تعبئتها سهلة جداً وهي كتابة اسم المصفوفة ثم فتح قوسيين مربعيين []
وكتابة رقم ال index بداخله للقيمة التي تريد التعامل معها ,,
-------------------------------
طريقة تعبئة المصفوفات الديناميكية


طريقة تعبئتها لا تختلف كثيراً عن طريقة المصفوفات الاستاتيكية العادية

لنفرض اننا قمنا بتعريف مصفوفة ديناميكية بهذا الكود

كود :
[color=#000000][COLOR=#0000bb]int students_marks[/color][color=#007700][[/color][color=#0000bb]3[/color][color=#007700]][[/color][color=#0000bb]3[/color][COLOR=#007700]] ;  
[/COLOR][color=#0000bb][/color][/COLOR]

فلو قمنا الان بكتابة قيمة لهذه المصفوفة بتعريف بُعد واحد بها فقط

هكذا مثلاً


كود :
[color=#000000][COLOR=#0000bb]students_marks[/color][color=#007700][[/color][color=#0000bb]0[/color][color=#007700]]=[/color][color=#0000bb]7[/color][COLOR=#007700];  
[/COLOR][color=#0000bb][/color][/COLOR]

فستلاحظ الخطأ التي سيظهر لك
لان المصفوفة التي تتعامل معها مكونة من بعديين وليس من بعد واحد !!








لحل هذه المشكلة ينبغي عليك تحديد البُعد الثاني للمصفوفة
اكتب هذا

كود :
[color=#000000][COLOR=#0000bb]students_marks[/color][color=#007700][[/color][color=#0000bb]0[/color][color=#007700]][[/color][color=#0000bb]0[/color][color=#007700]]=[/color][color=#0000bb]7[/color][COLOR=#007700];  
[/COLOR][color=#0000bb][/color][/COLOR]


---------------------------------------------
بعد ان تعرفنا على كيفية ادخال القيمة داخل نوعي المصفوفات سنأتي الان لحل بعض المسائل حول ذلك

يتبع

والان جرب
واعطيني النتيجة
====================
========
==


انتظروا الدرس الثاني عشر !!