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

التحقق من وجود المفاتيح

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

بينما يُعد عامل الأقواس المربعة (square bracket operator) مريحاً للوصول إلى قيم الخريطة (map values)، إلا أن هناك مشكلة محتملة: ماذا يحدث إذا حاولت الوصول إلى مفتاح غير موجود؟ كما تعلمت في الدرس السابق، فإن استخدام [] مع مفتاح غير موجود ينشئ ذلك المفتاح تلقائياً بقيمة افتراضية.

أحياناً قد ترغب في التحقق مما إذا كان المفتاح موجوداً قبل الوصول إليه، دون إنشاء إدخالات جديدة عن طريق الخطأ. هنا تبرز فائدة الطريقة .count()، فهي تخبرك ما إذا كان مفتاح معين موجوداً في الخريطة (map).

تُرجع الطريقة .count() القيمة 1 إذا كان المفتاح موجوداً و 0 إذا لم يكن موجوداً:

std::map<std::string, int> scores;
scores["Alice"] = 95;

if (scores.count("Alice")) {
    std::cout << "Alice's score: " << scores["Alice"] << std::endl;
} else {
    std::cout << "Alice not found" << std::endl;
}

يتيح لك هذا النهج التحقق بأمان من وجود مفتاح والتعامل مع كلتا الحالتين بشكل مناسب، مما يمنع إنشاء إدخالات غير مرغوب فيها في الخريطة (map) الخاصة بك.

challenge icon

التحدي

سهل

قم بإنشاء برنامج يدير نظام استعارة الكتب في المكتبة باستخدام std::map. سيقوم برنامجك بتتبع الكتب المتاحة واستخدام طريقة .count() للتحقق بأمان مما إذا كانت الكتب موجودة قبل محاولة الوصول إلى معلوماتها.

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

  • عدد صحيح n يمثل عدد الكتب في المكتبة
  • ثم n من أزواج المدخلات:
    • سلسلة نصية (string) تمثل عنوان الكتاب
    • عدد صحيح يمثل عدد النسخ المتاحة
  • عدد صحيح m يمثل عدد طلبات الكتب المراد التحقق منها
  • ثم m من السلاسل النصية التي تمثل عناوين الكتب للبحث عنها

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

  1. إنشاء std::map<std::string, int> باسم library
  2. قراءة عدد الكتب وملء الخريطة (map) بعناوين الكتب ونسخها المتاحة
  3. قراءة عدد طلبات الكتب
  4. لكل طلب كتاب، استخدم طريقة .count() للتحقق مما إذا كان الكتاب موجوداً في المكتبة
  5. طباعة الرسالة المناسبة بناءً على ما إذا كان الكتاب موجوداً أم لا

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

لكل طلب كتاب:

  • إذا كان الكتاب موجوداً: Book "[book title]" is available with [number] copies
  • إذا لم يكن الكتاب موجوداً: Book "[book title]" is not available in the library

استخدم طريقة .count() في جملة if للتحقق من وجود الكتاب قبل الوصول إلى قيمته. إذا كانت library.count(bookTitle) تعيد 1، فإن الكتاب موجود ويمكنك الوصول بأمان إلى library[bookTitle] للحصول على عدد النسخ. إذا كانت تعيد 0، فإن الكتاب غير موجود في المكتبة.

جرّب بنفسك

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

int main() {
    // قراءة عدد الكتب
    int n;
    cin >> n;
    
    // إنشاء خريطة المكتبة
    map<string, int> library;
    
    // قراءة معلومات الكتاب وملء الخريطة
    for (int i = 0; i < n; i++) {
        string title;
        int copies;
        cin >> title >> copies;
        library[title] = copies;
    }
    
    // قراءة عدد طلبات الكتب
    int m;
    cin >> m;
    
    // TODO: اكتب كودك أدناه
    // معالجة كل طلب كتاب باستخدام طريقة .count()
    // التحقق مما إذا كان الكتاب موجوداً وطباعة الرسالة المناسبة
    
    return 0;
}
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow