بداية، يظهر أن لديك فهم جيد لكيفية استخدام الـ 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 كما يلي:
cppenum class Severity { Mild, Moderate, Severe };
تم استخدام enum class
بدلاً من enum
لتفادي تسمية القيم بشكل عشوائي في مساحة الأسماء، ولضمان عدم وجود تداخل مع أسماء أخرى.
ثم يمكنك تكوين الـ enum
داخل فئة Allergy
بشكل مباشر داخل الـ public
section:
cppclass Allergy {
public:
enum class Severity { Mild, Moderate, Severe };
Allergy();
Allergy(string, string, list, Severity);
// ... باقي الكود ...
Severity getSeverity() const;
private:
// ... باقي الكود ...
Severity newSeverity;
};
ثم يمكنك تحديث تعريف وتنفيذ الدالة المنشئة Allergy
في Allergy.cpp لتشمل الـ Severity
:
cppAllergy::Allergy(string name, string category, list symptom, Severity severity) {
newName = name;
newCategory = category;
newSymptom = symptom;
newSeverity = severity;
}
وأخيراً، لتظهير القيمة الخاصة بالحساسية في الـ main.cpp
، يمكنك تحديث جزء الإدخال والإخراج كما يلي:
cppint 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
لتحديد درجة حدة الحساسية بطريقة أكثر وضوحاً وأماناً في برنامج الحساسيات الخاص بك.