المصفوفات ARRAYS الجزء الرابع

(4) مقارنة محتويات مصفوفتين :
- من الممكن ايضا ان تقارن محتويات مصفوفتين من الحروف
- لعمل ذلك استخدم الاجراء strcmp وله الصيغة التالية:
result = strcmp(string1 , string2 );
- سيقارن الاجراء strcmp محتويات المصفوفتين ويضع ناتج المقارنة فى المتغير result
- إذا كانت المصفوفتان متطابقتين ( اى يحتويان على نفس مجموعة الحروف ) يكون المتغير result فى هذه الحالة يساوى صفراً
- وإذا كانت المصفوفتان مختلفتين فإن المتغير result يحتوى على نتيجة بخلاف الصفر
* البرنامج التالى يعطى مثالاً على استخدام الاجراء strcmp :-
كود:
# include < stdio.h> # include <string.h> void main(void) { char string1[80]; char string2[80]; int result; printf(“ enter the first string “); gets(string1); printf(“ enter the second string : “); gets(string2); result = strcmp(string1,string2); if(result == 0 ) printf(“the two string are identical : ); else printf(“the two string are different : ); }
ملاحظات :
- فى هذا البرنامج سيطلب من المستخدم غدخال عبارتين ثم يستخدم الاجراء strcmp ليقلرن بينهما ويعرض نتيجة المقارنة
- ويمكن ايضا ان تستخدم الاجراء strcmp ليقارن بين محتويات مصفوفة حروف ومجموعة حروف مثل result = strcmp(string1,string2);


* برنامج عام *
لاستخدام الاجراءات المختلفة التى تتعامل معها مصفوفة الحروف
كود:
# include < stdio.h> # include < string.h> void main(void) { char string1[80]; char string2[80]; int result , choice; printf(“ enter the first string : “ ); gets(strig1); printf(“enter the second string : “ ); gets(strung2); printf(“\n enter the function you want: \n “ “1- strcpy \n “ “2- strcat \n “ “3- strcmp \n”); printf(“enter you choice : ); scanf(“%d “ , &choice); switch(choice) { case 1: printf(\n copy second string to first \n”); strcpy(string1 , string2 ); printf(string1); break; case 2: printf(\n merging the two string \n”); strcat(string1 , string2 ); printf(string1); break; case 3: printf(“\n comparing the two strings \n “); result = strcmp(string1,string2); if(result == 0 ) printf( “ the two strimg are identical “); else printf( “ the two strimg are different “); break; default : printf(“plase enter a number 1-3 “ ); } }
** تمرير مصفوفة الى الاجراءات **
- من الاستخدامات المفيدة للمصفوفات سواء المصفوفات العادية أو مصفوفات الحروف هو ان تتمكن من تمريرها الى بعض الاجراءات التى تكتبها
- عندما ترغب فى تمرير إحدى المصفوفات الى اجراء يجب ان تعلن عن الاجراء بحيث تخبر المترجم انه سيتلقى مصفوفة وليس متغيراً عادياً مثل void fn(int num[ ] ); هنا تخبر المترجم ان الاجراء fn سيتلقى مصفوفة من نوع int بعد ذلك عندما ترغب فى تمرير المصفوفة اى الاجراء أذكر اسم المفوفة فقط كما يلى fn(num);
* البرنامج التالى :-
يعطى مثالاً على كيفية تمير مصفوفة حروف الى احد الاجراءات :-
كود:
# include < stdio.h> # include <ctype.h> # include <string.h> void changetoupper(char string[ ] );
كود:
void main(void) { char string[80]; do { printf(“ enter a string to change to upper “ case \n enter \ “quit \ “to exit”); gets(string); changetoupper(string); } while(strcmp(string , “quit”)); }
void changetoupper(char string[ ] ) { unsigned int count; for(counr = 0 ; count < strlen(string); count++) printf(“%c” , toupper(string[count])); printf(“\n\n”); }

ملاحظات :
- هذا البرنامج يطلب من المستخدم ان يدخل مجموعة حروف ثم يحولها الى حروف كبيرة
- عندما يبدا البرنامج يدخل فى تكرار do….while ويستمر فى طلب مجموعات الحروف حتى يدخل المستخدم كلمة quit وعندها يخرج من التكرار
- فى كل مرة يدخل المستخدم مجموعة حروف تستدعى الاجراء changetoupper ونمرر له مصفوفة الحروف التى أدخلها المستخدم ليطبعها بالحرف الكبيرة.
- هنا تستدعى الإجـراء toupper أولاً ثم نمرر الحــرف الذى يعــود به الى الإجراء printf ليطبعه printf(“%c” , toupper(string[count]));