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

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

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

الآن بعد أن أصبح بإمكانك إضافة العناصر والتحقق منها وإزالتها من المجموعة، دعنا نتعلم كيفية التكرار عبر جميع العناصر في المجموعة. توفر حلقة 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.

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

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. تذكر أنه إذا تم توفير كلمات مكررة في المدخلات، فسيتم تجاهلها تلقائياً بواسطة المجموعة، بحيث يتم عرض الكلمات الفريدة فقط.

ورقة مرجعية

استخدم حلقة 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) تلقائيًا على الترتيب المفرز أثناء التكرار. يتم عرض العناصر في تسلسلها المفرز الطبيعي (أبجديًا للسلاسل النصية، ورقميًا للأرقام)، وليس بترتيب الإدراج.

جرّب بنفسك

#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