Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

التكرار عبر المجموعة

جزء من قسم Logic & Flow في رحلة C++ على Coddy — الدرس 39 من 56.

الآن بعد أن أصبح بإمكانك إضافة العناصر والتحقق منها وإزالتها من المجموعة (set)، دعنا نتعلم كيفية التكرار عبر جميع العناصر في المجموعة. توفر حلقة for المبنية على النطاق (range-based for loop) الطريقة الأكثر سلاسة للوصول إلى كل عنصر.

إليك كيفية التكرار عبر مجموعة (set):

std::set<std::string> fruits = {"banana", "apple", "cherry"};

for (const std::string& fruit : fruits) {
    std::cout << fruit << std::endl;
}

أهم ميزة يجب تذكرها هي أن المجموعات (sets) تحافظ تلقائيًا على ترتيب فرزها. عندما تمر عبر مجموعة fruits أعلاه، سيكون الناتج "apple" و "banana" و "cherry" - وليس الترتيب الذي أدخلتها به. هذا الفرز التلقائي هو أحد المزايا الرئيسية لاستخدام std::set.

يجعل هذا التكرار المرتب المجموعات مثالية لعرض البيانات بترتيب أبجدي أو عددي دون الحاجة إلى الفرز يدوياً. وسواء كنت تعمل مع الأرقام، أو السلاسل النصية، أو الأنواع الأخرى القابلة للمقارنة، فإن المجموعة ستعرضها دائماً بتسلسلها المرتب الطبيعي.

challenge icon

التحدي

سهل

قم بإنشاء برنامج يوضح ميزة الفرز التلقائي لـ std::set عن طريق إضافة كلمات إلى مجموعة (set) ثم المرور عليها لعرضها بترتيب أبجدي. سيختبر هذا التحدي فهمك لحلقات for المبنية على النطاق (range-based for loops) مع المجموعات وكيفية محافظة المجموعات على الترتيب المفرز.

سيتم توفير المدخلات التالية:

  • عدد صحيح n يمثل عدد الكلمات المراد إضافتها إلى المجموعة
  • ثم n من السلاسل النصية (strings) التي تمثل الكلمات المراد إدراجها في المجموعة

يجب على برنامجك القيام بما يلي:

  1. إنشاء std::set<std::string> فارغة
  2. قراءة عدد الكلمات المراد إضافتها
  3. استخدام حلقة لقراءة كل كلمة وإدراجها في المجموعة باستخدام طريقة .insert()
  4. استخدام حلقة for مبنية على النطاق للمرور عبر المجموعة وطباعة كل كلمة
  5. بعد طباعة جميع الكلمات، عرض العدد الإجمالي للكلمات الفريدة في المجموعة

استخدم تنسيق المخرجات الدقيق التالي:

لكل كلمة في المجموعة (بالترتيب الأبجدي):

[word]

ملخص في النهاية:

Total unique words: [count]

استخدم حلقة for مبنية على النطاق بالصيغة for (const std::string& word : wordSet) للمرور عبر جميع العناصر في المجموعة. ستقوم المجموعة تلقائيًا بتقديم الكلمات بترتيب أبجدي، مما يوضح إحدى المزايا الرئيسية لاستخدام std::set. تذكر أنه إذا تم توفير كلمات مكررة في المدخلات، فسيتم تجاهلها تلقائيًا بواسطة المجموعة، بحيث يتم عرض الكلمات الفريدة فقط.

جرّب بنفسك

#include <iostream>
#include <set>
#include <string>
using namespace std;

int main() {
    // قراءة عدد الكلمات
    int n;
    cin >> n;
    
    // إنشاء مجموعة فارغة لتخزين الكلمات
    set<string> wordSet;
    
    // TODO: اكتب كودك هنا
    // قراءة n من الكلمات وإدراجها في المجموعة
    // استخدم حلقة for المبنية على النطاق للمرور عبر المجموعة وطباعة كل كلمة
    // طباعة العدد الإجمالي للكلمات الفريدة
    
    return 0;
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow