في البداية، يجب أن نفهم أن متغيرات الصف والعمود العظمية (MAXROW وMAXCOL) والمصفوفة A يجب أن تكون متاحة لجميع الدوال في البرنامج. لذلك سنقوم بتعديل البرنامج بحيث تصبح هذه المتغيرات والمصفوفة جزءًا من نطاق البرنامج العام.
مقالات ذات صلة
سنبدأ بتحويل المتغيرات العظمية والمصفوفة إلى نطاق عام. سنقوم أيضًا بنقل دالة case1() لتكون قادرة على تحديد قيم المصفوفة والمتغيرات العظمية. سنقوم أيضًا بتعديل الدوال الأخرى لاستخدام هذه القيم.
cpp#include
using namespace std;
const int MAXROW = 5;
const int MAXCOL = 5;
int A[MAXROW][MAXCOL] = { 0 }; // تحديد المصفوفة كجزء من نطاق البرنامج العام
void case1();
void case2();
void case3();
void case4();
void case5();
int main()
{
char selection;
do
{
cout << "\n\nMENU\n";
cout << "1. Enter array 5,5 \n";
cout << "2. Find max and min: \n";
cout << "3. Average of negatives: \n";
cout << "4. Product of numbers different from 0 \n";
cout << "5. Output: \n";
cout << "6. Exit.\n\n";
cin >> selection;
switch (selection)
{
case '1':
{
system("cls");
case1();
}
break;
case '2':
{
case2();
}
break;
case '3':
{
case3();
}
break;
case '4':
{
case4();
}
break;
case '5':
{
case5();
}
break;
}
} while (selection != '6');
return 0;
}
void case1()
{
for (int r = 0; r < MAXROW; ++r)
for (int c = 0; c < MAXCOL; ++c)
{
cout << "\n A[" << r << "][" << c << "]= ";
cin >> A[r][c];
}
}
void case2()
{
int newarr[MAXROW + 1][MAXCOL + 1] = { 0 };
int max[MAXCOL] = { 0 };
for (int r = 0; r < MAXROW; ++r)
{
int minr = A[r][0];
for (int c = 0; c < MAXCOL; ++c)
{
newarr[r][c] = A[r][c];
if (minr > A[r][c])
minr = A[r][c];
if (max[c] < A[r][c])
max[c] = A[r][c];
}
newarr[r][MAXCOL] = minr;
}
for (int c = 0; c < MAXCOL; ++c)
newarr[MAXROW][c] = max[c];
// ... الجزء المتبقي من الكود
}
// الدوال الأخرى تتبع نفس المنهج
بهذا التعديل، يمكن لدالة case1() الآن تحديد قيم المصفوفة والمتغيرات العظمية، ويمكن استخدامها في الدوال الأخرى بسهولة.
المزيد من المعلومات
بالتأكيد، دعنا نستعرض المزيد من المعلومات حول البرنامج وكيف يتفاعل مع المصفوفة والمتغيرات العظمى المحددة:
1. دالة case1()
:
- تُستخدم هذه الدالة لإدخال القيم إلى المصفوفة
A
باستخدام جملتي for متداخلتين. - يتم تعريف المصفوفة
A
بشكل عام في النطاق العام ليمكن الوصول إليها من قبل الدوال الأخرى.
2. دالة case2()
:
- يتم إنشاء مصفوفة جديدة
newarr
لتخزين بعض الحوسبات والنتائج الفرعية. - يتم استخدام المصفوفة الأصلية
A
في هذه الدالة لاستخراج قيم الحد الأقصى لكل عمود والحد الأدنى لكل صف.
3. دالة case3()
:
- تقوم بحساب متوسط الأرقام السالبة في
newarr
وإخراجها. - يتم استخدام المصفوفة
newarr
للتأكد من أن نحن نعمل على البيانات التي تمت معالجتها فيcase2()
.
4. دالة case4()
:
- تقوم بحساب حاصل ضرب الأرقام غير المصفوفة في
newarr
التي تكون غير صفر. - تستخدم المصفوفة
newarr
لضمان استخدام البيانات الصحيحة.
5. دالة case5()
:
- تقوم بإخراج المحتوى الحالي للمصفوفة
newarr
. - يتم استخدام هذه المصفوفة لضمان عرض البيانات المعالجة بواسطة الدوال السابقة.
6. البرنامج الرئيسي main()
:
- يحتوي على القائمة الرئيسية ويستخدم الدوال المعرفة للتحكم في تنفيذ الخيارات.
- تم تحديد المصفوفة
A
والمتغيرات العظمىMAXROW
وMAXCOL
كجزء من النطاق العام.
ملحوظات إضافية:
- يُفضل تجنب استخدام
system("cls")
لمسح الشاشة، حيث يمكن أن يكون ذلك منصة معينة وقد لا يعمل على جميع الأنظمة بنفس الطريقة. يمكنك استخدام طرق أخرى لتحقيق هذا الهدف. - يُفضل التحقق من أدق تفاصيل الحلول المطلوبة للتأكد من أن البرنامج يلبي المتطلبات المحددة.