البرمجة

تحسين برمجة C++: جدول المقاعد وتقنيات التحسين

في المجال البرمجي للغة C++, تظهر كثيرًا أن تطبيقات الكونسول تتوقف بعد طلب المستخدم “الضغط على مفتاح الإدخال للاستمرار”، وهو سيناريو شائع يستخدم للمحافظة على رؤية نتائج البرنامج. وفي سياق السؤال الذي طُرح، يظهر أن هناك صعوبة في تحقيق هذا السيناريو بسبب استخدام دالة cin.ignore() و cin.get().

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

cpp
#include #include const int SEATROWS = 15; // عدد الصفوف const int SEATS = 30; // عدد المقاعد char theater[SEATROWS][SEATS]; // جدول لتمثيل المسرح void waitForEnterKey() { std::cout << "\nPress the Enter key to continue."; std::cin.ignore(std::numeric_limits::max(), '\n'); std::cin.get(); } void seatingChart() { // تهيئة الجدول بالرمز '#' للمقاعد الفارغة for(int row = 0; SEATROWS > row; ++row) for (int seat = 0; SEATS > seat; ++seat) theater[row][seat] = '#'; // عرض جدول المقاعد std::cout << "\n\t\tSeats"; std::cout << "\n 123456789012345678901234567890" << std::endl; for (int row = 0; SEATROWS > row; ++row) { std::cout << "\nRow " << std::setw(2) << row + 1 << "\t"; for (int seat = 0; SEATS > seat; ++seat) std::cout << theater[row][seat]; } // عرض الشرح حول الرموز std::cout << "\n\n\n\tLegend:\t* = Sold"; std::cout << "\n\t\t# = Available"; // انتظار الضغط على مفتاح الإدخال باستخدام الدالة المخصصة waitForEnterKey(); }

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

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

بالطبع، دعونا نوسع قليلاً على المعلومات المقدمة حتى نضيف قيمة إضافية للقارئ. في مجال برمجة C++، يتعلم المطورون غالبًا تقنيات متقدمة لتحسين أداء وبنية الشيفرة البرمجية. إليك بعض النقاط التي قد تكون مفيدة:

استخدام دوال المصفوفات:

في الشيفرة المقدمة، تم استخدام مصفوفة ثنائية الأبعاد (theater) لتمثيل جدول المقاعد. يمكن استخدام دوال المصفوفات للتعامل مع المصفوفات بشكل أفضل، مما يجعل الشيفرة أكثر قراءة وفهمًا.

cpp
// تعيين قيمة افتراضية للمصفوفة void initializeTheater() { for(int row = 0; row < SEATROWS; ++row) for (int seat = 0; seat < SEATS; ++seat) theater[row][seat] = '#'; } // عرض جدول المقاعد void displayTheater() { std::cout << "\n\t\tSeats"; std::cout << "\n 123456789012345678901234567890" << std::endl; for (int row = 0; row < SEATROWS; ++row) { std::cout << "\nRow " << std::setw(2) << row + 1 << "\t"; for (int seat = 0; seat < SEATS; ++seat) std::cout << theater[row][seat]; } }

التحكم في مدى الصفوف والمقاعد:

يمكن تحسين قابلية التوسع في البرنامج من خلال استخدام متغيرات لتحديد عدد الصفوف والمقاعد بدلاً من الأرقام الصلبة.

cpp
const int MAX_SEATROWS = 15; const int MAX_SEATS = 30; char theater[MAX_SEATROWS][MAX_SEATS]; void initializeTheater() { for(int row = 0; row < MAX_SEATROWS; ++row) for (int seat = 0; seat < MAX_SEATS; ++seat) theater[row][seat] = '#'; } // يمكنك تمرير عدد الصفوف والمقاعد كمتغيرات void displayTheater(int rows, int seats) { std::cout << "\n\t\tSeats"; std::cout << "\n 123456789012345678901234567890" << std::endl; for (int row = 0; row < rows; ++row) { std::cout << "\nRow " << std::setw(2) << row + 1 << "\t"; for (int seat = 0; seat < seats; ++seat) std::cout << theater[row][seat]; } }

استخدام التوثيق:

يمكن إضافة توثيق للشيفرة لتوضيح الأمور المهمة والوظائف. هذا يساعد على فهم الشيفرة وصيانتها في وقت لاحق.

cpp
/** * @brief Initializes the theater array with default values. */ void initializeTheater(); /** * @brief Displays the seating chart. * @param rows Number of rows to display. * @param seats Number of seats to display. */ void displayTheater(int rows, int seats);

تحسين الأسلوب:

يمكن أيضًا تحسين الأسلوب البرمجي لجعل الشيفرة أكثر أناقة وقابلية للصيانة.

إذا كنت بحاجة إلى مزيد من التوضيح أو تفصيل على أي نقطة محددة، فلا تتردد في طلب ذلك.

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

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

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!