حل نشاط ++C...إنشاء مصفوفة ذات بعدين و التاكد من تساوي مجموعة صفوف و اعمدة المصفوفة
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة السى و السي ++ C :: نقاش و أستفسارات الاعضاء
صفحة 1 من اصل 1 • شاطر
حل نشاط ++C...إنشاء مصفوفة ذات بعدين و التاكد من تساوي مجموعة صفوف و اعمدة المصفوفة
اهلا بكم الاخوة الكرام
بعض الاخوة ارسل لى هذا النشاط ....وسنقوم بحله سويا
3_سوف نقوم بكتابة جسم الوظيفة على النحو التالى :
شرح الكود اعلاه :
السطر رقم 4 : اظهار رسالة للمستخدم تطالبه بادخال عناصر المصفوفة
السطر رقم 5 : حلقة تبدء من الصفر حتى عدد الصفوف row بالصفوفة للدوران على كافة صفوف المصفوفة
السطر رقم 6 :اظهار رسالة للمسخدم برقم الصف الذي سيبدء ادخال بياناته به
السطر رقم 7 : حلقة دوران داخلية تبدء من الصفر حتى عدد الاعمدة col بالمصفوفة
السطر رقم 9 : استخدام امر الادخال cin لاستقبال بيانات كل صف من صفوفة المصفوفة من خلال المستخدم
بمعنى ذلك سنقوم بجمع كل صف من صفوف المصفوفة ثم بعد ذلك مقارنة ناتج مجموع كل صف ...فإن كانت كل الصفوف متساوية فى الجمع اذن تلك المصفوفة عبارة عن [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] ويتم ذلك من خلال الدوران على كل صف من صفوف المصفوفة ثم جمع القيم التى به وبعد ذلك يتم تخزين تلك القيم فى مصفوفة مؤقتة ومن ثم مقارنة قيم تلك المصفوفة المؤقتة فإن تساوة القيم اذا يتم ارجاع صحيح وان لم تتساوي يتم ارجاع خطا false .....على النحو التالى :
1_ الاعلان عن وظيفة من نوع [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] تاخذ مصفوفة كمعلمة لها و رقم يمثل عدد الصفوف [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] وذلك على النحو التالى :
2_نقوم بكتاية جسم الطريقة على النحو التالى :
بمعنى ذلك سنقوم بجمع كل عامود من اعمدة المصفوفة ثم بعد ذلك مقارنة ناتج مجموع كل عامود ...فإن كانت كل الاعمدة متساوية فى الجمع اذن تلك المصفوفة عبارة عن [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] ويتم ذلك من خلال الدوران على كل عامود من اعمدة المصفوفة ثم جمع القيم التى به وبعد ذلك يتم تخزين تلك القيم فى مصفوفة مؤقتة ومن ثم مقارنة قيم تلك المصفوفة المؤقتة فإن تساوة القيم اذا يتم ارجاع صحيح وان لم تتساوي يتم ارجاع خطا false .....على النحو التالى :
1_ الاعلان عن وظيفة من نوع bool تاخذ مصفوفة كمعلمة لها و رقم يمثل عدد الصفوف row وذلك على النحو التالى :
2_نقوم بكتاية جسم الطريقة على النحو التالى :
توجد عدة طرق لفرز المصفوفات ومنها استخدام الوظيفة sort التى توفرها المكتبة algorithm تلك الوظيفة سهلة الاستخدام للغاية فقط بتمرير معلمتين لها ، الأولى هي المصفوفة المراد فرزها والمعلمة الثانية هي الطول الذي نريد أن يتم فرز المصفوفة
لذلك فان الوظيفة المطلوبة ستكون على النحو التالى :
لتشغيل الكود و الاخراج على الرابط التالى :
بعض الاخوة ارسل لى هذا النشاط ....وسنقوم بحله سويا
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
عند قراءة النشاط سنجد المطلوب كما يلى :
1_إنشاء وظيفية لقراءة مصفوفة رقمية ذات حدين او بعدين ...بحيث عدد الاعمدة 5 و عدد الصفوف مختلفة
2_إنشاء وظيفة للتاكد من أن المصفوفة عبارة عن [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] بمعنى ان جميع الصفوف بها اجمالى قيمتها متساوية
3_إنشاء وظيفة للتاكد من أن المصفوفة عبارة عن [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] بمعنى ان جميع الاعمدة بها اجمالى قيمتها متساوية
4_انشاء وظيفة لفرز عناصر المصفوفة
اولا : انشاء وظيفة لقراءة عناصر مصفوفة ذات حدين
1_اذن اول شىء سنقوم بالاعلان عن عدد الاعمدة و التى حددها السؤال ب 5 اعمدة وذلك على النحو التالى :
- الكود:
#define col 5
2_سنقوم بانشاء وظيفة تاخدذ مصفوفة ذات حدين كمعملة (بارمامتير) ورقم يمثل عدد الصفوف وذلك على النحو التالى :
- الكود:
void read_arry(int[][col],int); // وظيفة لقراءة المصفوفة
3_سوف نقوم بكتابة جسم الوظيفة على النحو التالى :
- الكود:
void read_arry(int arr[][col] ,int row ){
cout<<"Please Enter elements in array:"<<endl;
for(int i=0;i<row;i++)
{
cout<<"row number:"<<i+1<<endl;
for(int j=0;j<col;j++)
{
cin>>arr[i][j];
}
}
السطر رقم 4 : اظهار رسالة للمستخدم تطالبه بادخال عناصر المصفوفة
السطر رقم 5 : حلقة تبدء من الصفر حتى عدد الصفوف row بالصفوفة للدوران على كافة صفوف المصفوفة
السطر رقم 6 :اظهار رسالة للمسخدم برقم الصف الذي سيبدء ادخال بياناته به
السطر رقم 7 : حلقة دوران داخلية تبدء من الصفر حتى عدد الاعمدة col بالمصفوفة
السطر رقم 9 : استخدام امر الادخال cin لاستقبال بيانات كل صف من صفوفة المصفوفة من خلال المستخدم
ثانيا :إنشاء وظيفة للتاكد من أن المصفوفة عبارة عن row_magic
بمعنى ذلك سنقوم بجمع كل صف من صفوف المصفوفة ثم بعد ذلك مقارنة ناتج مجموع كل صف ...فإن كانت كل الصفوف متساوية فى الجمع اذن تلك المصفوفة عبارة عن [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] ويتم ذلك من خلال الدوران على كل صف من صفوف المصفوفة ثم جمع القيم التى به وبعد ذلك يتم تخزين تلك القيم فى مصفوفة مؤقتة ومن ثم مقارنة قيم تلك المصفوفة المؤقتة فإن تساوة القيم اذا يتم ارجاع صحيح وان لم تتساوي يتم ارجاع خطا false .....على النحو التالى :
1_ الاعلان عن وظيفة من نوع [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] تاخذ مصفوفة كمعلمة لها و رقم يمثل عدد الصفوف [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] وذلك على النحو التالى :
- الكود:
bool check_row_magic(int[][col],int);
2_نقوم بكتاية جسم الطريقة على النحو التالى :
- الكود:
bool check_row_magic(int arr[][col] ,int row ){
int sum = 0; // متغير لتخزين مجموع كل صف
int tem[row]; // انشاء مصفوفة مؤقتة لتخزين ناتج الجمع
int value = 0; // متغير لتخزين القيمة للعنصر الاول فى المصفوفة المؤقتة
for(int i=0; i<row; i++) // حلقة دوران للمرور على كافة صفوف المصفوفة
{
sum = 0;
for(int j=0; j<col; j++) // حلقة دوران داخلية للمرور على اعمدة المصفوفة
{
sum = sum + arr[i][j]; // معادلة رياضية لجمع كل صف وتحزينة فى المتغير sum
}
// إظهار رسالة للمستخدم بقيمة كل صف
cout<<"Sum of elements of Row: "<< i+1<<" is "<< sum<<endl;
tem[i]=sum; // تخزين اجمالى كل صف فى المصفوفة المؤقتة
value=tem[0]; // استخراج اول قيمة فى المصفوفة المؤقتة و تخزينها فى المتغير value
if(tem[i]!= value) // مقارنة كل عنصر فى المصفوفة المؤقتة بقيمة value
return false; // اذا لم تتساوي القيم يتم ارجاع خطا
}
return true; // غير ذلك ارجاع صحيح
}
ثالثا :إنشاء وظيفة للتاكد من أن المصفوفة عبارة عن column_magic
بمعنى ذلك سنقوم بجمع كل عامود من اعمدة المصفوفة ثم بعد ذلك مقارنة ناتج مجموع كل عامود ...فإن كانت كل الاعمدة متساوية فى الجمع اذن تلك المصفوفة عبارة عن [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] ويتم ذلك من خلال الدوران على كل عامود من اعمدة المصفوفة ثم جمع القيم التى به وبعد ذلك يتم تخزين تلك القيم فى مصفوفة مؤقتة ومن ثم مقارنة قيم تلك المصفوفة المؤقتة فإن تساوة القيم اذا يتم ارجاع صحيح وان لم تتساوي يتم ارجاع خطا false .....على النحو التالى :
1_ الاعلان عن وظيفة من نوع bool تاخذ مصفوفة كمعلمة لها و رقم يمثل عدد الصفوف row وذلك على النحو التالى :
- الكود:
bool check_col_magic(int[][col],int);
2_نقوم بكتاية جسم الطريقة على النحو التالى :
- الكود:
bool check_col_magic(int arr[][col] ,int row ){
int sum = 0;
int tem[row];
int value = 0;
for(int i=0; i<row; i++)
{
sum = 0;
for(int j=0; j<col; j++)
{
sum = sum + arr[j][i]; // هنا يظهر الاختلاف عن الكود فى الطريقة التى تجمع كل صف
}
cout<<"Sum of elements of Column: "<< i+1<<" is "<< sum<<endl;
tem[i]=sum;
value=tem[0];
if(tem[i]!= value)
return false;
}
return true;
}
رابعا :انشاء وظيفة لفرز عناصر المصفوفة
توجد عدة طرق لفرز المصفوفات ومنها استخدام الوظيفة sort التى توفرها المكتبة algorithm تلك الوظيفة سهلة الاستخدام للغاية فقط بتمرير معلمتين لها ، الأولى هي المصفوفة المراد فرزها والمعلمة الثانية هي الطول الذي نريد أن يتم فرز المصفوفة
- الكود:
sort(arr, arr + n);
لذلك فان الوظيفة المطلوبة ستكون على النحو التالى :
- الكود:
void sort_arry(int m[][col],int row) {
for (int i = 0; i < row; i++) // الدوران على صفوفة المصوفة
sort(m[i], m[i] + col); // استخدام الوظيفة لترتيب كل صف على حده
cout<<"elements in array after sort:"<<endl;
// طباعة عناصر المصفوفة بعد الفرز
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
cout << (m[i][j]) << " ";
cout << endl;
}
}
و اخير سيكون كود الكامل للمثال او النشاط اعلاة على النحو التالى :
- الكود:
#include <iostream>
#include <algorithm>
using namespace std;
// Get the size colume
#define col 5
void read_arry(int[][col],int); // وظيفة لقراءة المصفوفة
void sort_arry(int[][col],int); // وظيفة لترتيب المصفوفة
bool check_row_magic(int[][col],int); // وظيفة للتاكد من أن اجمالي كل صف متساوي
bool check_col_magic(int[][col],int); // وظيفة للتاكد من ان اجمالى كل عامود متساوي
int main()
{
// انشاء ثلاث مصوفات
int A[4][5];
int B[6][5];
int C[5][5];
read_arry(A,4);
return 0;
}
void read_arry(int arr[][col] ,int row ){
cout<<"Please Enter elements in array:"<<endl;
for(int i=0;i<row;i++)
{
cout<<"row number:"<<i+1<<endl;
for(int j=0;j<col;j++)
{
cin>>arr[i][j];
}
}
cout<<"elements in array befor sort:"<<endl;
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
cout << arr[i][j] << " ";
}
// Newline for new row
cout << endl;
}
sort_arry(arr,row);
if(check_row_magic(arr,row))
cout<<"array is row_magic"<<endl;
else
cout<<"array is not row_magic"<<endl;
if(check_col_magic(arr,row))
cout<<"array is Column_magic"<<endl;
else
cout<<"array is not Column_magic"<<endl;
}
bool check_row_magic(int arr[][col] ,int row ){
int sum = 0; // متغير لتخزين مجموع كل صف
int tem[row]; // انشاء مصفوفة مؤقتة لتخزين ناتج الجمع
int value = 0; // متغير لتخزين القيمة للعنصر الاول فى المصفوفة المؤقتة
for(int i=0; i<row; i++) // حلقة دوران للمرور على كافة صفوف المصفوفة
{
sum = 0;
for(int j=0; j<col; j++) // حلقة دوران داخلية للمرور على اعمدة المصفوفة
{
sum = sum + arr[i][j]; // معادلة رياضية لجمع كل صف وتحزينة فى المتغير sum
}
// إظهار رسالة للمستخدم بقيمة كل صف
cout<<"Sum of elements of Row: "<< i+1<<" is "<< sum<<endl;
tem[i]=sum; // تخزين اجمالى كل صف فى المصفوفة المؤقتة
value=tem[0]; // استخراج اول قيمة فى المصفوفة المؤقتة و تخزينها فى المتغير value
if(tem[i]!= value) // مقارنة كل عنصر فى المصفوفة المؤقتة بقيمة value
return false; // اذا لم تتساوي القيم يتم ارجاع خطا
}
return true; // غير ذلك ارجاع صحيح
}
bool check_col_magic(int arr[][col] ,int row ){
int sum = 0;
int tem[row];
int value = 0;
for(int i=0; i<row; i++)
{
sum = 0;
for(int j=0; j<col; j++)
{
sum = sum + arr[j][i];
}
cout<<"Sum of elements of Column: "<< i+1<<" is "<< sum<<endl;
tem[i]=sum;
value=tem[0];
if(tem[i]!= value)
return false;
}
return true;
}
void sort_arry(int m[][col],int row) {
for (int i = 0; i < row; i++) // الدوران على صفوفة المصوفة
sort(m[i], m[i] + col); // استخدام الوظيفة لترتيب كل صف على حده
cout<<"elements in array after sort:"<<endl;
// طباعة عناصر المصفوفة بعد الفرز
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
cout << (m[i][j]) << " ";
cout << endl;
}
}
لتشغيل الكود و الاخراج على الرابط التالى :
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
| |
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة السى و السي ++ C :: نقاش و أستفسارات الاعضاء
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
» عملية تجميل الأذن الوطواطية| تجميل الأذن الوطواطية بدون جراحة|دكتور نادي صقر
» عملية تجميل الأذن الوطواطية: تجميل الأذن الوطواطية بدون جراحة
» شفط دهون الذقن المزدوجة | جراح تجميل في الكويت
» شفط دهون الذقن المزدوجة | أفضل جراح تجميل في الكويت
» شركة نقل عفش وأثاث في الكويت
» افضل فني صحي بالكويت
» أفضل موقع عربي للحصول على منح دراسية ودورات مجانية وفرص عمل
» مشكلة عند تشغيل الفيجوال بيسيك
» أفضل شركة نقل عفش وأثاث في الكويت