تصفية بيانات الـ Vector
جزء من قسم المنطق وتدفق التنفيذ في رحلة C++ على Coddy. الدرس 54 من 56.
التحدي
سهلقم بإنشاء برنامج ينفذ نظام تصفية بيانات لاستخراج أرقام محددة من مجموعة. سيختبر هذا التحدي قدرتك على الجمع بين المتجهات (vectors)، والتكرار (iteration)، والمنطق الشرطي (conditional logic)، وتصميم الدوال لمعالجة البيانات بشكل انتقائي.
سيتم توفير المدخلات التالية:
- عدد صحيح
nيمثل عدد الأعداد الصحيحة في المجموعة - ثم
nمن الأعداد الصحيحة التي تمثل الأرقام المراد تصفيتها - عدد صحيح
thresholdيمثل الحد الأدنى للقيمة المستخدمة في التصفية
يجب على برنامجك القيام بما يلي:
- إنشاء دالة باسم
filterNumbersتستقبلstd::vector<int>وحدًا أدنى (threshold) كعدد صحيح كمعاملات - يجب أن تعيد الدالة
std::vector<int>جديدًا يحتوي فقط على الأرقام من المتجه الأصلي التي تكون أكبر من الـ threshold - في الدالة الرئيسية (main function)، اقرأ قيم المدخلات واملأ المتجه بـ
nمن الأعداد الصحيحة - استدعِ الدالة
filterNumbersمع المتجه الذي تم ملؤه والـ threshold - اطبع عدد الأرقام التي تمت تصفيتها أولاً، ثم اطبع كل رقم تمت تصفيته في سطر منفصل
استخدم تنسيق المخرجات الدقيق التالي:
السطر الأول - عدد الأرقام التي تمت تصفيتها:
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;
}جميع دروس المنطق وتدفق التنفيذ
1المؤشرات والذاكرة
ما هو المؤشر؟معامل العنوان (Address-Of)معامل الوصول للقيمة (Dereference)المؤشرات الفارغة (Null Pointers)المؤشرات والمصفوفاتالذاكرة الديناميكية باستخدام 'new'تحرير الذاكرة باستخدام 'delete'مراجعة - تمارين على المؤشرات2المتجهات (المصفوفات الديناميكية)
مقدمة إلى std::vectorإنشاء Vectorإضافة العناصرالوصول إلى العناصرحجم الـ Vectorالتكرار باستخدام For Loopالـ Range-Based For Loopإزالة العناصرملخص - عمليات الـ Vectorتدرّب بنفسك: مترجم C++ عبر الإنترنت