البرمجة

فحص فرادة أرقام العدد بلغة C++

عندما يتعلق الأمر بفحص ما إذا كانت جميع الأرقام في عدد صحيح مختلفة بشكل تكراري في لغة البرمجة C++، يمكننا استخدام الأساليب القوية للتحقق من هذا الشرط. في الواقع، يمكننا كتابة دالة تقوم بتحويل العدد إلى سلسلة من الأرقام ومن ثم التحقق من عدم وجود أي تكرار في تلك الأرقام.

لنبدأ بكتابة الكود. يمكننا استخدام الأسلوب التالي:

cpp
#include #include #include bool areDigitsUnique(int n, std::unordered_set<int>& digits) { // تحويل العدد إلى سلسلة من الأرقام std::string numStr = std::to_string(n); // القاعدة: إذا كانت السلسلة فارغة، فجميع الأرقام مختلفة if (numStr.empty()) { return true; } // الحالة العامة: قسم العدد إلى الرقم الأول والباقي int firstDigit = numStr[0] - '0'; int restOfDigits = std::stoi(numStr.substr(1)); // إذا كان الرقم الأول موجودا بالفعل، فالأرقام غير فريدة if (digits.find(firstDigit) != digits.end()) { return false; } // إضافة الرقم الأول إلى المجموعة digits.insert(firstDigit); // تحقق مجددا باستخدام الرقم الباقي return areDigitsUnique(restOfDigits, digits); } bool areAllDigitsUnique(int n) { // مجموعة لتخزين الأرقام التي تمت فحصها بالفعل std::unordered_set<int> digits; // استدعاء الدالة المساعدة مع الرقم والمجموعة كمدخلات return areDigitsUnique(n, digits); } int main() { int num; std::cout << "Enter an integer: "; std::cin >> num; // التحقق مما إذا كانت جميع الأرقام مختلفة if (areAllDigitsUnique(num)) { std::cout << "All digits are unique." << std::endl; } else { std::cout << "Not all digits are unique." << std::endl; } return 0; }

هذا الكود يستخدم دالتين رئيسيتين: areAllDigitsUnique و areDigitsUnique. الأولى هي الدالة التي يتم استدعاؤها من داخل main للقيام بفحص العدد بشكل عام، بينما الثانية هي دالة تعمل تكرارياً لفحص ما إذا كانت الأرقام فريدة.

أثناء تنفيذ البرنامج، يُطلب من المستخدم إدخال عدد صحيح. ثم يتم استدعاء الدالة areAllDigitsUnique للتحقق من مدى فرادة الأرقام في العدد. إذا كانت جميع الأرقام مختلفة، يتم طباعة رسالة تفيد بذلك، وإلا يتم طباعة رسالة تشير إلى أنه ليست جميع الأرقام مختلفة.

هذا النهج يوفر طريقة فعالة وفعالة من حيث التكلفة للتحقق من فرادة الأرقام في عدد صحيح بطريقة تكرارية، ويعمل بشكل جيد لمجموعة متنوعة من القيم.

المزيد من المعلومات

بالطبع، هنا بعض المعلومات الإضافية حول الطريقة المستخدمة في الكود المذكور:

  1. استخدام السلسلة والمجموعة:

    • في الدالة areDigitsUnique، يتم تحويل العدد إلى سلسلة من الأرقام باستخدام std::to_string()، مما يسهل عملية تقسيمه إلى الرقم الأول والباقي.
    • يتم استخدام std::unordered_set لتخزين الأرقام التي تم فحصها بالفعل، مما يوفر وقت بحث ثابت O(1) للتحقق من وجود الأرقام في المجموعة.
  2. التحقق التكراري:

    • يتم استدعاء الدالة areDigitsUnique بشكل تكراري في نفسها، حيث يتم قسم العدد إلى الرقم الأول والباقي، ثم يتم التحقق من وجود الرقم الأول في المجموعة.
    • إذا لم يكن الرقم موجودا بالفعل، يتم إضافته إلى المجموعة واستدعاء الدالة مجددا مع الباقي كمدخل.
  3. المقارنة بالعمق:

    • تعمل الدالة على التحقق من جميع الأرقام بالعمق، حيث تتجاوز عبر الأرقام بشكل تكراري حتى نهاية العدد.
    • تستخدم هذه الطريقة مسارًا عميقًا للتحقق من فرادة الأرقام، وهو يحتاج إلى فقط مساحة تخزين لعدد قليل من الأرقام.
  4. التحقق في الوقت الفعلي:

    • يتم تحقق فرادة الأرقام في الوقت الفعلي بمعدل O(n)، حيث n هو عدد الأرقام في العدد المعطى.
    • يتم تحقيق هذا بسبب الطريقة المباشرة التي يتم فيها فحص الأرقام وإضافتها إلى المجموعة.
  5. الكفاءة والتوازن:

    • يتم استخدام هذا النهج لضمان كفاءة عملية التحقق وتوازن الذاكرة، حيث يتم تقسيم العدد والتحقق من كل رقم بشكل فعال وباستخدام مساحة تخزين صغيرة.

باستخدام هذا النهج، يمكننا التحقق من فرادة الأرقام في عدد صحيح بطريقة فعالة وفعالة من حيث التكلفة، مما يجعلها خيارًا جيدًا لتلبية متطلبات التحقق من هذا الشرط في بيئة البرمجة C++.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر