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

التكرار باستخدام For Loop

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

الآن بعد أن عرفت كيفية الوصول إلى العناصر الفردية والتحقق من حجم المتجه (vector)، دعنا نتعلم كيفية معالجة كل عنصر بشكل منهجي باستخدام حلقة for التقليدية. يجمع هذا النهج بين طريقة .size() والوصول القائم على الفهرس لزيارة كل عنصر بالتسلسل.

تستخدم حلقة for التقليدية متغيراً للفهرس (index) يبدأ من 0 ويزداد حتى يصل إلى حجم المتجه (vector):

std::vector<std::string> names = {"Alice", "Bob", "Charlie"};

for (int i = 0; i < names.size(); i++) {
    std::cout << names[i] << std::endl;
}

في هذا المثال، يضمن شرط الحلقة i < names.size() عدم تجاوز حدود المتجه (vector)، بينما يقوم names[i] بالوصول إلى كل عنصر باستخدام الفهرس الحالي. ستقوم الحلقة بطباعة كل اسم في سطر منفصل.

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

challenge icon

التحدي

سهل

قم بإنشاء برنامج يستخدم حلقة for التقليدية للتكرار عبر vector من أسماء المنتجات وعرضها بتنسيق قائمة مرقمة.

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

  • عدد صحيح n يمثل عدد المنتجات
  • ثم n من السلاسل النصية (strings) التي تمثل أسماء المنتجات

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

  1. إنشاء std::vector<std::string> باسم products
  2. استخدام push_back() لإضافة كل اسم من أسماء المنتجات الـ n إلى الـ vector
  3. استخدام حلقة for تقليدية مع متغير فهرس (index variable) للتكرار عبر الـ vector
  4. في الحلقة، استخدم طريقة .size() لشرط الحلقة
  5. استخدم عامل الأقواس المربعة [] للوصول إلى كل عنصر عن طريق الفهرس
  6. طباعة كل منتج مع رقم موقعه (بدءاً من 1) بالتنسيق المحدد

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

Product 1: [first product name]
Product 2: [second product name]
Product 3: [third product name]
...

يجب أن تبدأ حلقة for بالفهرس 0، وتستخدم i < products.size() كشرط، وتزيد i في كل تكرار. عند الطباعة، أضف 1 إلى الفهرس لعرض أرقام المواقع بدءاً من 1.

ورقة مرجعية

استخدم حلقة for التقليدية للتكرار عبر vector من خلال دمج .size() مع الوصول المستند إلى الفهرس:

std::vector<std::string> names = {"Alice", "Bob", "Charlie"};

for (int i = 0; i < names.size(); i++) {
    std::cout << names[i] << std::endl;
}

يضمن شرط الحلقة i < names.size() عدم تجاوز حدود الـ vector، بينما names[i] يصل إلى كل عنصر باستخدام الفهرس الحالي. يوفر لك متغير الفهرس تحكماً دقيقاً في العنصر الذي تعمل معه ويسمح لك بمعرفة موقع كل عنصر.

جرّب بنفسك

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

int main() {
    // قراءة عدد المنتجات
    int n;
    cin >> n;
    
    // إنشاء متجه (vector) لتخزين أسماء المنتجات
    vector<string> products;
    
    // قراءة أسماء المنتجات وإضافتها إلى المتجه
    for (int i = 0; i < n; i++) {
        string product;
        cin >> product;
        products.push_back(product);
    }
    
    // مهام: اكتب الكود الخاص بك أدناه
    // استخدم حلقة for تقليدية للمرور عبر المتجه
    // وطباعة كل منتج مع رقم موقعه
    
    return 0;
}
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow