مثل ما حنا عارفين ان المصفوفات يمكن ان تكون من اي نمط
راح نتكلم عن سلاسل الحروف مع النمط char
اي سلسلة من سلاسل الحروف مثل hello هي بالواقع عبارة عن مصفوفة حروف .
لذالك يمكن اعطاء قيم ابدائية لمصفوفة حروف باستخدام سلاسل الحروف على سبيل المثال يقوم التصريح التالي
- الكود:
-
char string1[] = "first";
باعطاء قيم ابتدائية لكل عنصر من عناصر المصفوفة string1 يقابل حرف من السلسلة "first"
ويتخدد عدد عناصر المصفوفة بواسطة المترجم .طبعا اكيد المترجم يعطي العدد على حسب طول السلسلة .
مهم:
لو نلاحظ ان السلسة "first " تحتوي على خمسة حروف بالاضافة الى حرف خاص يحدد نهاية هذة السلسلة وهو الحرف الصفري null character
لذالك تتألف المصفوفة من ستة عناصر يتم تمثيل الحرف الصفري على شكل
- الكود:
-
'\0'
تنتهي كافة سلاسل الحروف بالحرف الصفري ويتم بالتالي التصريح عن مصفوفات التي تتعامل مع هذي السلاسل بحث انها تكون ذات حجم كافي لتخزين السلسلة مع الحرف الصفري.
وعلى اعتبار ان السلاسل هي مصفوفات فيمكن الوصل الى كل حرف من حروفها (عن طريق الدليل)
مثلا لوصول الى الحرف f من المصفوفة string1 نستخدم التعبير التالي
- الكود:
-
cout<<string1[0];
يمكن انشاء مصفوفة والطلب من المستخدم ادخال سلسلة ويكون بااستخدام التابع cin
التعرف عن مصفوفة
- الكود:
-
char string2[20];
هنا قمنا بانشاء مصفوفة حروف قادرة على تخزين 19 حرف مع الحرف الصفري...
والعملية التالية تقوم
- الكود:
-
cin>>string2;
لتخزين المدخلات في المصفوفة .
لاحظة انا كتبنا اسم المصفوفة فقط ولم نعطي اي تعليمة خاصة بالحجم.
وبالتالي تقع المهمة على المبرمج ان يصرح عن مصفوفة تفي بالغرض المطلوب من ناحية الحجم .
ويمكن طبعتها بالكود التالي
- الكود:
-
cout<<string2;
نشووف مثاال عملي على الي تكلمنا عنة
- الكود:
-
#include <iostream>
using namespace std;
int main()
{
char string1[20],string2[]="the string 2";
cout<<"Enter the string\n";
cin>>string1;
cout<<"the string 1\t"<<string1<<endl;
cout<<"the string 2\t"<<string2<<endl
<<"string whithe space\n ";
for (int i=0;string1[i] !='\0';i++)
cout<<string1[i]<<" ";
cout<<endl;
system("pause");
return 0;
}
الشرح
- الكود:
-
char string1[20],string2[]="the string 2";
أولا :عرفنا مصفوفتين من نوع char الأولى عطيناها حجم وهو 20 والثانيه ماعطيناها حجم لكننا حددنا لها
جمله فالكومبايلر مباشره راح يحسب الحجم اللي هو13 فهو يحسب أيضا السبيس بين الكلمات
ثانيا:طلبنا من المستخدم ادخال الجمله في المصفوفه الأولى لأننا ماعبيناها فهي فارغه (مع ملاحظة الألتزام بالحجم حق المصفوفه)
- الكود:
-
cout<<"Enter the string\n";
cin>>string1;
ثالثا:عملنا عملية اخراج بسيطه لعناصر المصفوفتين
- الكود:
-
cout<<"the string 1\t"<<string1<<endl;
cout<<"the string 2\t"<<string2<<endl
رابعا : وهنا الفكره أننا راح نخرج عناصر المصفوفه الأولى اللي دخلناها مفرقه (أي مسافه بين كل حرف وحرف في الجمله المدخله)
- الكود:
-
<<"string whithe space\n ";
for (int i=0;string1[i] !='\0';i++)
cout<<string1[i]<<" ";
cout<<endl;
مع ملاحظة أنه وضعنا شرط التوقف في الفور لوب هو الوصول للحرف الصفري أو النل
فمثلا :لو أنا دخلت الجمله في المصفوفه الأولى IMAMفراح تخرج كالأتي:
- الكود:
-
I M A M
واتمنى ان الدرس يكون واضح