أحد الأسئلة الشائعة عند العمل مع لغة برمجة باسكال هو البحث عن أطول كلمة في سلسلة معينة. يمكن أن تنشأ هذه المهمة في العديد من المواقف ، على سبيل المثال ، عند تطوير برنامج لتحليل النص أو عند العمل مع السلاسل بشكل عام. في هذه المقالة ، سننظر في كيفية تنفيذ خوارزمية للبحث عن أطول كلمة في سلسلة باستخدام باسكال.
قبل أن نبدأ ، دعنا نتعرف على أطول كلمة. في هذه الحالة ، سنفترض أن أطول كلمة هي الكلمة التي تحتوي على أكبر عدد من الأحرف. على سبيل المثال ، في السطر "مرحبا ، العالم! هذا اختبار.أطول كلمة هي "مرحبا". هناك عدة طرق لحل هذه المشكلة ، وسننظر في الطريقتين الأكثر شيوعا: استخدام وظائف باسكال القياسية وكتابة الإجراء الخاص بنا.
الطريقة الأولى للعثور على أطول كلمة في سلسلة هي استخدام وظيفة باسكال القياسية ، والتي تسمح لك بتقسيم سلسلة إلى كلمات. للقيام بذلك ، يمكنك استخدام وظيفة "إكستراكتوردبوس" من وحدة "سيسوتيل". تأخذ هذه الوظيفة معلمتين: سلسلة وموضع كلمة (يبدأ بـ 1).
الطريقة الثانية هي كتابة الإجراء الخاص بك الذي سيقوم بكل العمل. للقيام بذلك ، يمكنك استخدام حلقة "ل" ، والتي سوف تتكرر من خلال جميع الأحرف في السلسلة وحساب عدد الأحرف في الكلمة الحالية. بعد المرور عبر السطر بأكمله ، سيعيد الإجراء أكبر عدد من الأحرف والكلمة نفسها.
- طرق البحث عن أطول كلمة في سلسلة في باسكال
- التكرار من خلال جميع الكلمات في سطر
- استخدام الوظيفة للعثور على الحد الأقصى لطول الكلمة
- أمثلة على استخدام الطرق للعثور على أطول كلمة في سلسلة
- سؤال وجواب
طرق البحث عن أطول كلمة في سلسلة في باسكال
في لغة برمجة باسكال ، هناك طرق مختلفة للعثور على أطول كلمة في سلسلة. وهنا عدد قليل منهم:
طريقة تقسيم السلسلة إلى كلمات
في هذه الطريقة ، يتم تقسيم السلسلة إلى كلمات منفصلة باستخدام حرف مسافة أو فاصل آخر. ثم يتم التحقق من طول كل كلمة ، ويتم حفظ أطول كلمة.
الخوارزمية نموذج التعليمات البرمجية 1. قسم السلسلة إلى كلمات باستخدام حرف مسافة (أو فاصل آخر). الكلمات: = سترينجليست.إنشاء;2. تذهب من خلال كل كلمة والتحقق من طوله. النهاية;3. احفظ أطول كلمة. النهاية;طريقة باستخدام وظائف السلسلة
لدى باسكال أيضا وظائف مختلفة للعمل مع السلاسل ، مثل نقاط البيع (بحث السلسلة الفرعية) والنسخ (نسخة السلسلة الفرعية) والطول (طول السلسلة). باستخدام هذه الوظائف ، يمكنك كتابة وظيفة ستجد أطول كلمة في سلسلة.
الخوارزمية مثال على الكود 1. Определите функцию для поиска самого длинного слова в строке. النهاية;2. استدعاء وظيفة وتمرير سلسلة للبحث عن أطول كلمة. كلمة طويلة: = البحث عن كلمة طويلة (إدخال);
يعتمد اختيار الطريقة على تفضيلات المبرمج ومتطلبات المهمة المحددة. من المهم اختيار الطريقة التي تناسب احتياجاتك على أفضل وجه ولديها أفضل أداء.
التكرار من خلال جميع الكلمات في سطر
للعثور على أطول كلمة في سلسلة ، تحتاج إلى تكرار جميع الكلمات في السلسلة ومقارنة أطوالها. للقيام بذلك ، يمكنك استخدام الخوارزمية التالية:
- قسم السلسلة إلى كلمات منفصلة.
- تذهب من خلال جميع الكلمات وتحديد أطول كلمة.
- اطبع النتيجة.
نموذج التعليمات البرمجية في باسكال:
برنامج البحث عن كلمة طويلة;
فار
سلسلة الإدخال ، الكلمة الأطول ، الكلمة الحالية: سلسلة;
أنا: عدد صحيح;
بيغن
// Ввод строки
اكتب ('::');
ريدلن (إنبوسترينغ);
// Разбиение строки на слова и поиск самого длинного слова
أطول كلمة:=";
الكلمة الحالية:=";
بالنسبة لي: = 1 إلى الطول (سلسلة الإدخال) هل
بيغن
إذا إنبوسترينغ [أنا] '' ثم
كيرنتورد: = كيرنتورد + إنبوسترينغ [أنا]
آخر
بيغن
إذا كان الطول (الكلمة الحالية) > الطول (الكلمة الأطول) ثم
الكلمة الأطول: = الكلمة الحالية;
الكلمة الحالية:=";
النهاية;
النهاية;
// التحقق من الكلمة الأخيرة
إذا كان الطول (الكلمة الحالية) > الطول (الكلمة الأطول) ثم
الكلمة الأطول: = الكلمة الحالية;
// إخراج النتيجة
كتابة ('أطول كلمة:' ، أطول كلمة);
النهاية.
في هذا المثال ، يطلب البرنامج أولا سلسلة من المستخدم. ثم تقسم هذه السلسلة إلى كلمات وتبحث عن أطول كلمة. يتم عرض النتيجة على الشاشة.
الآن ، إذا قمت بتشغيل هذا البرنامج وأدخل ، على سبيل المثال ، سلسلة "تكرار على جميع الكلمات في السلسلة" ، سيقوم البرنامج إخراج أطول كلمة "تكرار".
استخدام الوظيفة للعثور على الحد الأقصى لطول الكلمة
للبحث عن أطول كلمة في سلسلة في باسكال ، يمكنك استخدام الوظيفة. Функция будет принимать в качестве аргумента строку и возвращать самое длинное слово.
Вот пример функции для поиска самого длинного слова:
"باسكال
العثور على وظيفةكلمة (شارع: سلسلة): سلسلة;
فار
الكلمات: سترينجليست;
أنا: عدد صحيح;
الطول الأقصى: عدد صحيح;
بيغن
الكلمات: = سترينجليست.إنشاء;
كلمات.محدد:= ' ';
كلمات.ديليميتدتكست: = شارع;
الطول الأقصى: = 0;
لأني: = 0 إلى الكلمات.العد-1 هل
بيغن
إذا كان الطول (كلمات[أنا]) > الطول الأقصى ثم
بيغن
الطول الأقصى: = الطول (كلمات [أنا]);
النهاية;
النهاية;
لأني: = 0 إلى الكلمات.العد-1 هل
بيغن
إذا كان الطول (كلمات[أنا]) = الطول الأقصى إذن
بيغن
النتيجة: = كلمات [أنا];
استراحة;
النهاية;
النهاية;
كلمات.مجانا;
النهاية;
"`
دعونا كسر هذا الرمز:
- في البداية ، يتم إنشاء كائن سترينغليست ، والتي سيتم استخدامها لتقسيم سلسلة إلى كلمات.
- ثم ، باستخدام خاصية المحدد ، يتم تعيين مسافة كفاصل.
- يتم تقسيم السلسلة إلى كلمات باستخدام المحددطريقة النص.
- بعد ذلك ، يتم تهيئة متغير الطول الأقصى إلى الصفر. فإنه سيتم تخزين الحد الأقصى الحالي طول الكلمة.
- ثم ، يتم فرز جميع الكلمات في السلسلة ويتم مقارنة طولها مع الحد الأقصى للطول الحالي.
- إذا كان طول الكلمة أكبر من الحد الأقصى للطول الحالي ، يتم تحديث متغير الطول الأقصى.
- بعد العثور على الحد الأقصى للطول ، هناك بحث آخر عن كلمة والبحث عن كلمة بنفس الطول.
- يتم إرجاع الكلمة الأولى التي تم العثور عليها مع الحد الأقصى للطول من الوظيفة.
- في نهاية الدالة ، يتم تحرير كائن سترينغليست باستخدام الطريقة الحرة.
مثال على استخدام الوظيفة:
"باسكال
فار
سلسلة الإدخال: سلسلة;
أطولكلمة: سلسلة;
بيغن
إنبوسترينغ: = 'هذا مثال على سلسلة مع عدة كلمات';
كلمة طويلة: = البحث عن كلمة طويلة(سلسلة الإدخال);
وريتلن ('أطول كلمة في سلسلة:' ، أطول كلمة);
النهاية.
«`
نتيجة لتنفيذ هذا الرمز ، سيتم عرض الرسالة:
"`
أطول كلمة في السطر: عدة
"`
وهكذا ، فإن وظيفة فيندلونجيستورد يسمح لك للعثور على أطول كلمة في سلسلة في باسكال.
أمثلة على استخدام الطرق للعثور على أطول كلمة في سلسلة
يمكن أن يكون إرجاع أطول كلمة في سلسلة مفيدا في مجموعة متنوعة من مهام البرمجة. لنلق نظرة على بعض الأمثلة على استخدام الطرق لإيجاد أطول كلمة في سلسلة في باسكال.
1. باستخدام دورة
في هذا المثال ، نستخدم حلقة لاجتياز سلسلة ومقارنة طول كل كلمة بالقيمة القصوى الحالية. نحافظ على أطول كلمة وطولها.
فار
شارع ، كلمة ، أطولكلمة: سلسلة;
لين ، لونجستلين: عدد صحيح;
أنا: عدد صحيح;
البداية
شارع: = 'سلسلة المثال مع كلمات متعددة';
أطول كلمة:=";
لونجستين: = 0;
كلمة:=";
لين: = 0;
لأني: = 1 إلى طول (شارع) هل
البداية
إذا شارع [أنا] " ثم
البداية
كلمة: = كلمة + شارع [أنا;
لين: = لين + 1;
النهاية
آخر إذا لين > لونستلين ثم
البداية
كلمة طويلة: = كلمة;
لونستلين: = لين;
كلمة:=";
لين: = 0;
النهاية
آخر
البداية
كلمة:=";
لين: = 0;
النهاية;
النهاية;
إذا لين > لونستلين ثم
البداية
كلمة طويلة: = كلمة;
لونستلين: = لين;
النهاية;
كتابة ('أطول كلمة:' ، أطول كلمة);
وريتلن ('طول أطول كلمة:' ، أطوللن);
النهاية.
2. باستخدام وظيفة الانقسام
تسمح لك وظيفة الانقسام بتقسيم سلسلة إلى مجموعة من السلاسل الفرعية بواسطة فاصل محدد. في هذا المثال ، نستخدم دالة الانقسام لتقسيم سلسلة إلى كلمات ، ثم العثور على أطول كلمة.
فار
شارع ، أطول كلمة: سلسلة;
الكلمات: مجموعة من السلسلة;
لونجيستلين: عدد صحيح;
أنا: عدد صحيح;
بيغن
شارع := 'مثال لسلسلة مع عدة كلمات';
أطول كلمة:=";
الطول: = 0;
الكلمات: = سبليت (شارع،'') ؛ / / تقسيم سلسلة إلى كلمات
لأني: = 0 إلى عالية (كلمات) هل / / عبور مجموعة من الكلمات
بيغن
إذا كان الطول (كلمات[أنا]) > أطول ثم
بيغن
كلمة طويلة: = كلمات [أنا];
الطول: = الطول (كلمات [أنا]);
النهاية;
النهاية;
كتابة ('أطول كلمة:' ، أطول كلمة);
وريتلن ('طول أطول كلمة:' ، أطوللن);
النهاية.
3. استخدام التعبيرات العادية
إذا كان هناك دعم للتعبيرات العادية ، فيمكننا استخدامها للبحث عن أطول كلمة في سلسلة. في هذا المثال ، نستخدم وحدة ريجكسر للبحث عن الكلمات التي تتكون فقط من الحروف. ثم نجد أطول كلمة.
{mode وضع أوبجفك}
الاستخدامات
سيسوتيلز ، ريجكسبر;
فار
شارع ، أطول كلمة: سلسلة;
إعادة: تريجكسبر;
بيغن
شارع: = 'مثال على سلسلة مع عدة كلمات';
كلمة أطول := '';
re := TRegExpr.Create('[A-Za-z]+'); // Регулярное выражение для слов
re.InputString := str;
while re.Exec do // Поиск всех слов
begin
if (re.MatchLen > Length(longestWord)) then
begin
longestWord := re.Match;
end;
end;
writeln('Самое длинное слово: ', longestWord);
writeln('Длина самого длинного слова: ', Length(longestWord));
re.Free;
end.
هذه مجرد أمثلة قليلة لاستخدام طرق للعثور على أطول كلمة في سلسلة بلغة باسكال. اعتمادا على احتياجاتك والمكتبات المتاحة ، يمكنك اختيار أي من هذه الأساليب أو العثور على طريقتك الخاصة.