البرمجة

كيفية تقسيم مصفوفة إلى مصفوفات فرعية في C++

لتحقيق هذا، يمكنك استخدام الإدخالات المستخدمة لإدخال المصفوفة الأصلية وإنشاء مصفوفة جديدة بحجم 2*2. يمكنك استخدام حلقتين متداخلتين للوصول إلى كل عنصر في المصفوفة الأصلية ونسخ القيم إلى المصفوفة الجديدة بشكل مناسب. هناك بعض النقاط التي يجب مراعاتها:

  1. يجب التأكد من أن الصفوف والأعمدة في المصفوفة الأصلية كافية لإنشاء مصفوفات 2*2. إذا كانت الصفوف أو الأعمدة غير متوافقة، يمكنك تجاهل العناصر الزائدة.
  2. يجب التحقق من عدم تجاوز حجم المصفوفة الأصلية عند الوصول إلى العنصر الأخير.

فيما يلي مثال لكيفية تنفيذ هذا:

cpp
#include #include using namespace std; int main() { // المصفوفة الأصلية 3*3 int original[3][3] = { {2, 5, 3}, {5, 8, 9}, {1, 4, 5} }; // عدد الصفوف والأعمدة في المصفوفة الأصلية int rows = 3; int cols = 3; // حلقة للوصول إلى كل عنصر في المصفوفة الأصلية for (int i = 0; i < rows - 1; ++i) { for (int j = 0; j < cols - 1; ++j) { // إنشاء مصفوفة 2*2 جديدة int subMatrix[2][2] = { {original[i][j], original[i][j+1]}, {original[i+1][j], original[i+1][j+1]} }; // طباعة المصفوفة الجديدة 2*2 for (int k = 0; k < 2; ++k) { for (int l = 0; l < 2; ++l) { cout << subMatrix[k][l] << " "; } cout << endl; } cout << endl; } } return 0; }

هذا الكود ينشئ مصفوفات 22 جديدة من المصفوفة الأصلية ويقوم بطباعتها. تحتاج إلى تعديل الحلقات والشروط إذا كانت المصفوفة الأصلية لديك أكبر من 33.

المزيد من المعلومات

بالطبع! لتوسيع المثال، يمكننا إجراء بعض التعديلات لجعل الحل أكثر عمومية بحيث يمكنه التعامل مع مصفوفات ذات حجم مختلفة. يمكننا استخدام متغيرين لتحديد حجم المصفوفة الناتجة (مثل newRows و newCols) واستخدام حلقات للوصول إلى العناصر بدلاً من تحديدها يدويًا. إليك كيفية تنفيذ ذلك:

cpp
#include #include using namespace std; int main() { // المصفوفة الأصلية int original[5][5] = { {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15}, {16, 17, 18, 19, 20}, {21, 22, 23, 24, 25} }; // حجم المصفوفة الأصلية int rows = 5; int cols = 5; // حجم المصفوفة الناتجة int newRows = rows - 1; int newCols = cols - 1; // حلقة للوصول إلى كل عنصر في المصفوفة الناتجة for (int i = 0; i < newRows; ++i) { for (int j = 0; j < newCols; ++j) { // إنشاء مصفوفة 2*2 جديدة int subMatrix[2][2] = { {original[i][j], original[i][j+1]}, {original[i+1][j], original[i+1][j+1]} }; // طباعة المصفوفة الجديدة 2*2 for (int k = 0; k < 2; ++k) { for (int l = 0; l < 2; ++l) { cout << subMatrix[k][l] << " "; } cout << endl; } cout << endl; } } return 0; }

هذا الكود سيقوم بتقسيم المصفوفة الأصلية 55 إلى مصفوفات 22. يمكنك تعديل قيم المصفوفة الأصلية والحجم الناتج حسب احتياجاتك.

زر الذهاب إلى الأعلى