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

تصفية بيانات الـ Vector

جزء من قسم المنطق وتدفق التنفيذ في رحلة C++ على Coddy. الدرس 54 من 56.

challenge icon

التحدي

سهل

قم بإنشاء برنامج ينفذ نظام تصفية بيانات لاستخراج أرقام محددة من مجموعة. سيختبر هذا التحدي قدرتك على الجمع بين المتجهات (vectors)، والتكرار (iteration)، والمنطق الشرطي (conditional logic)، وتصميم الدوال لمعالجة البيانات بشكل انتقائي.

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

  • عدد صحيح n يمثل عدد الأعداد الصحيحة في المجموعة
  • ثم n من الأعداد الصحيحة التي تمثل الأرقام المراد تصفيتها
  • عدد صحيح threshold يمثل الحد الأدنى للقيمة المستخدمة في التصفية

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

  1. إنشاء دالة باسم filterNumbers تستقبل std::vector<int> وحدًا أدنى (threshold) كعدد صحيح كمعاملات
  2. يجب أن تعيد الدالة std::vector<int> جديدًا يحتوي فقط على الأرقام من المتجه الأصلي التي تكون أكبر من الـ threshold
  3. في الدالة الرئيسية (main function)، اقرأ قيم المدخلات واملأ المتجه بـ n من الأعداد الصحيحة
  4. استدعِ الدالة filterNumbers مع المتجه الذي تم ملؤه والـ threshold
  5. اطبع عدد الأرقام التي تمت تصفيتها أولاً، ثم اطبع كل رقم تمت تصفيته في سطر منفصل

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

السطر الأول - عدد الأرقام التي تمت تصفيتها:

Filtered count: [number_of_filtered_elements]

ثم كل رقم تمت تصفيته في أسطر منفصلة:

[filtered_number_1]
[filtered_number_2]
...

إذا لم يجتز أي رقم التصفية، اطبع فقط:

Filtered count: 0

تذكر أن دالة filterNumbers يجب أن تنشئ متجهًا جديدًا فارغًا، وتكرر عبر المتجه المدخل باستخدام "range-based for loop"، وتستخدم جملة "if" للتحقق من كل رقم مقابل الـ threshold. يجب إضافة الأرقام التي تكون أكبر تمامًا من الـ threshold فقط إلى متجه النتيجة باستخدام push_back(). يجب أن تعيد الدالة المتجه الجديد الذي يحتوي فقط على العناصر التي تمت تصفيتها.

جرّب بنفسك

#include <iostream>
#include <vector>
using namespace std;

// TODO: قم بإنشاء دالة filterNumbers هنا

int main() {
    // قراءة عدد الأعداد الصحيحة
    int n;
    cin >> n;
    
    // قراءة الأعداد الصحيحة وتخزينها في vector
    vector<int> numbers;
    for (int i = 0; i < n; i++) {
        int num;
        cin >> num;
        numbers.push_back(num);
    }
    
    // قراءة العتبة (threshold)
    int threshold;
    cin >> threshold;
    
    // TODO: استدعِ دالة filterNumbers وقم بتخزين النتيجة
    
    // TODO: اطبع العدد المصفى والأرقام وفقاً للتنسيق المطلوب
    
    return 0;
}

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم C++ عبر الإنترنت