كتابة برنامج ++C لفحص السلاسل التناظرية
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة السى و السي ++ C :: نقاش و أستفسارات الاعضاء
صفحة 1 من اصل 1 • شاطر
كتابة برنامج ++C لفحص السلاسل التناظرية
اهلا بكم
راسلني احد الاخوة لحل السؤال التالى :
والسؤال يتطلب الاتى :
1_إنشاء وظيفية باسم Pal تاخذ سلسة نصية و فحصها و إرجاع القيمة 1 اذا كانت السلسة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] و القيمة 0 ان كانت غير ذلك
2_إنشاء وظيفة باسم CountPal تاخذ قائمة نصية و فحص كل عنصر من عناصر القائمة و ارجاع عدد السلاسل المتناظرة بها وذلك باستخدام الوظيفة السابقة Pal
3_فى الدالة او الوظيفة الرئسية main يتم طباعة عدد السلاسل النصية المتناظرة
الحل :
بداية ماهى مفهوم السلاسل المتناظر ...يُقال أن السلسلة تكون متناظرة إذا كان عكس السلسلة هو نفسه السلسلة. على سبيل المثال ، "abba" متناظرة ذلك لانك لو عكستها من اليمين للشمال سوف تعطيك نفس السلسة
أما الخوارزمية للحل البرمجى ستكون عن النحو التالى:
1) البحث عن طول او النص.
2) حلقة تكرار حتى نصف الاول من السلسة.
3) تحقق من العنصر الأول بالعنصر الاخير ثم العنصر الثاني مع العنصر قبل الاخير وما الى ذلك .
… .. أ) اذا تم العثور على حرفين مختلفين يتم ارجاع القيمة صفر
4) إذا وصلنا إلى نهاية حلقة التكرار ، فهذا يعني أننا لم نجد حرفين مختلفين
فيما يلي وظيفة بالـــــ ++c للتحقق مما إذا كانت سلسلة معينة متناظرة أم لا بالشروط الواردة بالمثال :
بعد ذلك سنقوم بانشاء الوظيفة الثانية
و المثال بالكامل سيكون على النحو التالى :
لتشغيل الكود
المخرجات :
راسلني احد الاخوة لحل السؤال التالى :
والسؤال يتطلب الاتى :
1_إنشاء وظيفية باسم Pal تاخذ سلسة نصية و فحصها و إرجاع القيمة 1 اذا كانت السلسة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] و القيمة 0 ان كانت غير ذلك
2_إنشاء وظيفة باسم CountPal تاخذ قائمة نصية و فحص كل عنصر من عناصر القائمة و ارجاع عدد السلاسل المتناظرة بها وذلك باستخدام الوظيفة السابقة Pal
3_فى الدالة او الوظيفة الرئسية main يتم طباعة عدد السلاسل النصية المتناظرة
الحل :
بداية ماهى مفهوم السلاسل المتناظر ...يُقال أن السلسلة تكون متناظرة إذا كان عكس السلسلة هو نفسه السلسلة. على سبيل المثال ، "abba" متناظرة ذلك لانك لو عكستها من اليمين للشمال سوف تعطيك نفس السلسة
أما الخوارزمية للحل البرمجى ستكون عن النحو التالى:
1) البحث عن طول او النص.
2) حلقة تكرار حتى نصف الاول من السلسة.
3) تحقق من العنصر الأول بالعنصر الاخير ثم العنصر الثاني مع العنصر قبل الاخير وما الى ذلك .
… .. أ) اذا تم العثور على حرفين مختلفين يتم ارجاع القيمة صفر
4) إذا وصلنا إلى نهاية حلقة التكرار ، فهذا يعني أننا لم نجد حرفين مختلفين
فيما يلي وظيفة بالـــــ ++c للتحقق مما إذا كانت سلسلة معينة متناظرة أم لا بالشروط الواردة بالمثال :
- الكود:
int Pal( string s ) // وظيفة لارجاع قيمة 1 اذا كانت السلسة المدخلة متناظرة
{
int n = s.length(); // متغير لتخزين طول السلسة النصية
// حلقة تكرار حتى نصف الاول من السلسة
//بداخل حلقة التكرار جملة شرطية
// ويتحقق من العنصر الأول بالعنصر الأخير ،
// العنصر الثاني مع العنصر الثاني الأخير وما إلى ذلك.
// اذا تم العثور على حرفين مختلفين يتم ارجاع القيمة صفر
// معنى ذلك ان السلسة غير تناظرية
for ( int i = 0; i <= n/2; i++ )
{
if ( s[i] != s[n-1-i] )
return 0;
}
return 1;
}
بعد ذلك سنقوم بانشاء الوظيفة الثانية
- الكود:
int CountPal(string name[]){ // وظيفة لادخال قائمة نصية
int count =0; // متغير لتخزين عدد النصوص التناظرية التى سيتم فحصها
for(int i=0;i<5;i++){ // حلقة دوران للمرور على كافة عناصر القائمة
if (Pal(name[i])) count++; // الاتصال بالوظيفة السابقة لفحص السلسة
// وزيادة العداد فكل مرة يتم ايجاد نص تناظري
}
return count;
}
و المثال بالكامل سيكون على النحو التالى :
- الكود:
#include <iostream>
#include<string>
using namespace std;
int Pal( string s ) // وظيفة لارجاع قيمة 1 اذا كانت السلسة المدخلة متناظرة
{
int n = s.length(); // متغير لتخزين طول السلسة النصية
// حلقة تكرار حتى نصف الاول من السلسة
//بداخل حلقة التكرار جملة شرطية
// ويتحقق من العنصر الأول بالعنصر الأخير ،
// العنصر الثاني مع العنصر الثاني الأخير وما إلى ذلك.
// اذا تم العثور على حرفين مختلفين يتم ارجاع القيمة صفر
// معنى ذلك ان السلسة غير تناظرية
for ( int i = 0; i <= n/2; i++ )
{
if ( s[i] != s[n-1-i] )
return 0;
}
return 1;
}
int CountPal(string name[]){ // وظيفة لادخال قائمة نصية
int count =0; // متغير لتخزين عدد النصوص التناظرية التى سيتم فحصها
for(int i=0;i<5;i++){ // حلقة دوران للمرور على كافة عناصر القائمة
if (Pal(name[i])) count++; // الاتصال بالوظيفة السابقة لفحص السلسة
// وزيادة العداد فكل مرة يتم ايجاد نص تناظري
}
return count;
}
int main()
{
string n[]={"ana","ahmed","non","lol","many"}; // مصفوفة نصية
// طباعة عدد الاسماء التناظرية بالمصفوفة اعلاه
cout <<"The number of palindrome names in the list are:"<<CountPal(n);
return 0;
}
لتشغيل الكود
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
المخرجات :
The number of palindrome names in the list are:3
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
| |
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة السى و السي ++ C :: نقاش و أستفسارات الاعضاء
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
الخميس أبريل 25, 2024 8:56 pm من طرف moslema_r
» شركة مكافحة حشرات في راس الخيمة
الخميس أبريل 25, 2024 8:34 pm من طرف moslema_r
» تطبيقIncogniton لإدارة ملفات تعريف متعددة للمتصفح
الأربعاء أبريل 24, 2024 3:51 pm من طرف زاكااا
» افضل شركة مكافحة النمل الابيض بالرياض
الإثنين أبريل 22, 2024 9:41 pm من طرف moslema_r
» Exemplary Сasual Dating - Verified Women
الخميس أبريل 18, 2024 9:18 pm من طرف wdqwd
» رش الدفان بالرياض
الخميس أبريل 18, 2024 7:11 pm من طرف moslema_r
» شركة تنظيف خزانات الشارقة
الخميس أبريل 18, 2024 6:57 pm من طرف moslema_r
» شركة مكافحة الفئران بالرياض
الإثنين أبريل 15, 2024 8:23 pm من طرف moslema_r
» افضل شركة كشف تسربات المياه بالباحة
الخميس أبريل 04, 2024 7:02 am من طرف gmalnagy
» ساعدوني وفهموني help me
الجمعة مارس 29, 2024 8:37 am من طرف linesoft