السلام عليكم ورحمة الله وبركاته
اخواني الكرام هل هناك طريقة لفحص تساوي مصفوفتين في برنامج MikroC دون فحص كل عنصر على حده اي فحص كامل المصفوفة، فمثلا عندي المصفوفتان
كود:
matrix1[]={1,3,4,6}
matrix2[]={1,3,7,6}
واريد فحص التساوي بينهما هكذا
كود:
if(matrix1[]==matrix2[])
ولكن لم ينفذ الامر واعطى البرنامج خطأ
ولا اريد عمل فحص التساوي لكل عنصر على حده مثل هذا
كود:
if(matrix1[0]==matrix2[0] && matrix1[1]==matrix2[1] && matrix1[2]==matrix2[2] && matrix1[3]==matrix2[3])
ارجو ممن كانت لديه اي فكرة للمساعدة الا يبخل علينا
وشكرا جزيلا.
|
السلام عليكم ورحمة الله وبركاته
تمنياتي بالتوفيق لك أخي الكريم
لنفترض أن لديك مصفوفتين كل مصفوفة مكونة من مئة عنصر وتريد أن تقارن بينهما بحيث تفحص هل كل عنصر يساوي العنصر المقابل أم لا ..
ومن أسهل الطرق لذلك استخدام جملة for كما بالمثال التالي :
كود:
for(x=0;x<100;x++)
{
if(matrix_1[x]==matrix_2[x]){ equivalent=1;}
else { equivalent=0; break;}
}
في هذا المثال تخيل معي ماسيحدث أول مرة يتم فيها تنفيذ جملة for الـ x قيمتها بصفر وبالتالي سيختبر هل العنصر الذي ترتيبه صفر في المصفوفة الأولى يساوي العنصر الذي ترتيبه صفر في المصفوفة الثانية ..إذا كان نعم يجعل متغير معين يساوي واحد هذا المتغير يدل على التساوي اسمه equivalent .
وإن كانو غير متساويين تكون قيمة المتغير بصفر .
وبعد ذلك تصبح x تساوي واحد فيختبر مرة أخرى لكن العنصر الذي ترتيبه واحد في كلا المصفوفتين وبعد ذلك العنصر الثاني والثالث وهكذا إلى نهاية المصفوفة .. إذا كانت كل العناصر متساوية فبالتأكيد قيمة المتغير equivalent ستساوي واحد أما في حالة أي عنصر من عناصر المصفوفة كان لايساوي العنصر المقابل له في المصفوفة الأخرى حينها المتغير equivalent سيساوي صفر وليس هذا فقط بل لن نكمل المقارنة لباقي العناصر وسنخرج من جملة for باستخدام الأمر break كما هو واضح في الكود السابق ..
وبعد كتابة الكود السابق تستطيع أن تختبر قيمة المتغير equivalent إذا كانت بواحد أي المصفوفتان متساويتان نفذ كذا وإذا كانت بصفر نفذ كذا ...
أرجو أن تكون اتضحت الفكرة لديك ...
تمنياتي بكل التوفيق والسلام عليكم ورحمة الله وبركاته