كتابة برنامج ++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
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
» شركة تنظيف مسابح بالرياض
» "بروتين بعد التكميم فوائد البروتين بعد التكميم بروتين بودر بعد التكميم"
» اشهر نسخ واتساب بلس 2023 whatsapp plus
» متجر مجوهرات دير: إشراقة الذهب الخالص
» صراف صينى مقاس57*40
» فلاي تورز: اكتشف عالمًا من السفر والسياحة المثيرة
» متجر yallaa kids : مصدر الإبداع والتعلم للأطفال
» افضل تمويل
» "اقوي عروض المساج "