البرمجة

استخدام Enum في C++ لتحديد حدة حساسية الحساسيات

بداية، يظهر أن لديك فهم جيد لكيفية استخدام الـ enum في لغة البرمجة C++. الـ enum يتيح لك تحديد مجموعة من القيم الممكنة لمتغير معين، وهو ما يعزز قوة البرنامج ويجعل الشيفرة أكثر وضوحاً.

لتحسين البرنامج الخاص بك، يمكنك استخدام الـ enum لتحديد خيارات الشدة (severity) الممكنة للحساسية. يمكننا أن نقوم بذلك عن طريق تعديل الكلاس Allergy وإضافة حقل من نوع severity.

Allergy.hpp:

cpp
#ifndef Allergy_hpp #define Allergy_hpp #include #include #include using namespace std; class Allergy { public: enum Severity { mild, moderate, severe }; // تحديد الـ enum هنا Allergy(); Allergy(string, string, list , Severity); // إضافة severity كمعامل إلى الدالة البناءة ~Allergy(); //getters string getCategory() const; string getName() const; list getSymptom() const; Severity getSeverity() const; // دالة جديدة للحصول على قيمة الـ severity private: string newCategory; string newName; list newSymptom; Severity newSeverity; // إضافة حقل لتخزين قيمة الـ severity }; #endif /* Allergy_hpp */

Allergy.cpp:

cpp
#include "Allergy.hpp" Allergy::Allergy(string name, string category, list symptom, Severity severity) { newName = name; newCategory = category; newSymptom = symptom; newSeverity = severity; // تخزين قيمة الـ severity } // ... (الأجزاء الأخرى من الشيفرة لم تتغير) // دالة للحصول على قيمة الـ severity Allergy::Severity Allergy::getSeverity() const { return newSeverity; }

تغيير البرنامج الرئيسي main.cpp:

cpp
#include #include #include "Allergy.hpp" using namespace std; int main() { string name; string category; int numSymptoms; string symptHold; list symptom; cout << "Enter allergy name: "; getline(cin, name); cout << "Enter allergy category: "; getline(cin, category); cout << "Enter number of allergy symptoms: "; cin >> numSymptoms; // اضف هنا سؤالاً لاختيار شدة الحساسية cout << "Enter allergy severity (0 for mild, 1 for moderate, 2 for severe): "; int severityChoice; cin >> severityChoice; Allergy::Severity severity = static_cast(severityChoice); for(int i = 0; i < numSymptoms; i++) { cout << "Enter symptom # " << i+1 << ": "; cin >> symptHold; symptom.push_back(symptHold); } Allergy Allergy_1(name, category, symptom, severity); cout << endl << "Allergy Name: " << Allergy_1.getName() << endl << "Allergy Category: " << Allergy_1.getCategory() << endl << "Allergy Symptoms: "; for(auto& s : Allergy_1.getSymptom()) { cout << s << ", "; } cout << endl << "Allergy Severity: "; switch(Allergy_1.getSeverity()) { case Allergy::mild: cout << "Mild"; break; case Allergy::moderate: cout << "Moderate"; break; case Allergy::severe: cout << "Severe"; break; default: cout << "Unknown"; break; } cout << endl; return 0; }

بهذه الطريقة، يمكن للمستخدم تحديد شدة الحساسية بشكل أسهل وأكثر وضوحاً.

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

بالطبع، سأقوم بتوسيع شرحك حول كيفية استخدام enum في فئة C++ لتحديد خيارات القيم لإدخال المستخدم. في البداية، يُظهر الكود الذي قدمته كيف يمكن استخدام enum لتحديد درجة حدة الحساسية للحساسية. القيم الممكنة هي mild، moderate، و severe.

للبداية، يُفضل دائماً استخدام أسماء موضحة لل enum لتسهيل قراءة الكود. على سبيل المثال، يمكن تحسين تعريف الـ enum في Allergy.hpp كما يلي:

cpp
enum class Severity { Mild, Moderate, Severe };

تم استخدام enum class بدلاً من enum لتفادي تسمية القيم بشكل عشوائي في مساحة الأسماء، ولضمان عدم وجود تداخل مع أسماء أخرى.

ثم يمكنك تكوين الـ enum داخل فئة Allergy بشكل مباشر داخل الـ public section:

cpp
class Allergy { public: enum class Severity { Mild, Moderate, Severe }; Allergy(); Allergy(string, string, list, Severity); // ... باقي الكود ... Severity getSeverity() const; private: // ... باقي الكود ... Severity newSeverity; };

ثم يمكنك تحديث تعريف وتنفيذ الدالة المنشئة Allergy في Allergy.cpp لتشمل الـ Severity:

cpp
Allergy::Allergy(string name, string category, list symptom, Severity severity) { newName = name; newCategory = category; newSymptom = symptom; newSeverity = severity; }

وأخيراً، لتظهير القيمة الخاصة بالحساسية في الـ main.cpp، يمكنك تحديث جزء الإدخال والإخراج كما يلي:

cpp
int main() { // ... باقي الكود ... cout << endl << "Allergy Name: " << Allergy_1.getName() << endl << "Allergy Category: " << Allergy_1.getCategory() << endl << "Allergy Symptoms: "; for (auto &s : Allergy_1.getSymptom()) { cout << s << ", "; } cout << endl << "Allergy Severity: "; switch (Allergy_1.getSeverity()) { case Allergy::Severity::Mild: cout << "Mild"; break; case Allergy::Severity::Moderate: cout << "Moderate"; break; case Allergy::Severity::Severe: cout << "Severe"; break; } cout << endl; return 0; }

بهذه الطريقة، يمكنك الآن استخدام enum class لتحديد درجة حدة الحساسية بطريقة أكثر وضوحاً وأماناً في برنامج الحساسيات الخاص بك.

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