العودة إلى موقع برمج

ممكن مساعدة C++ فصل الarray

#1

ماهو الخطأ في الكود التالي
اريد مقارنة المصفوفتين

#include
#include “functions.h”
using namespace std;
void printArray(int array[],int size)
{ for(int i=0; i<size;i++)
{ cout << array[i] << " " << endl; } }

bool compare(int array1[], int array2[], int size)
{
for(int c=1;c<size;c++) {
if(int array1[c]==int array2[c])

  return true;

}
}

#2

الكود يبدو صحيح ولكن في حال استخدام

return true;

فانه ستعيد الدالة قيمة true فور تحقق اول مساواة فهل هذا ماتريده؟
الافضل ان تحتفظ بدليل القيمة التي تحقق المساواة مثلا ثم تعيدها في نهاية الدالة

اما اذا كنت تريد التحقق في حال وجود اي عناصر مشتركة بين المصفوفتين بغض النظر ان يكونا في نفس الموقع او لهما نفس العنوان فستحتاج ان تقارن كل عنصر من المصفوفة الاولى مع جميع العناصر من المصفوفة الثانية وهكذا

1 Like
#3

قلت “الافضل ان تحتفظ بدليل القيمة التي تحقق المساواة مثلا ثم تعيدها في نهاية الدالة”
كيف افعل ذلك؟

#4

من خلال تعريف مصفوفة فارغة قبل جملة الدوران واضافة قيمة دليل المصفوفة الذي تتحقق المساواة عنده (c في الكود السابق) الى المصفوفة داخل الجملة الشرطية
وبذلك عند انتهاء جملة الدوران ستكون قيم دليل العناصر المتشابهة ضمن المصفوفة وستعرف كم عنصر من المصفوفتين متساوي اضافة الى امكانية جلب كل عنصر من خلال دليله