ahmed.o.mohamed

اختبر قدراتك في C/CPP - الحلقة الرابعة, الجزء التاسع عشر

4 ردود في هذا الموضوع

السلام عليكم

الحلقة الأولى.

الحلقة الثانية - الجزء الأول.

الحلقة الثانية - الجزء الثاني.

الحلقة الثانية - الجزء الثالث.

الحلقة الثانية - الجزء الرابع.

الحلقة الثانية - الجزء الخامس.

الحلقة الثانية - الجزء السادس و الأخير.

الحلقة الثالثة - الجزء الأول.

الحلقة الثالثة - الجزء الثاني.

الحلقة الثالثة - الجزء الثالث.

الحلقة الثالثة - الجزء الرابع.

الحلقة الثالثة - الجزء الخامس و الأخير.

الحلقة الرابعة - الجزء الأول.

الحلقة الرابعة - الجزء الثاني.

الحلقة الرابعة - الجزء الثالث.

الحلقة الرابعة - الجزء الرابع.

الحلقة الرابعة - الجزء الخامس.

الحلقة الرابعة - الجزء السادس.

الحلقة الرابعة - الجزء السابع.

الحلقة الرابعة - الجزء الثامن.

الحلقة الرابعة - الجزء التاسع.

الحلقة الرابعة - الجزء العاشر.

الحلقة الرابعة - الجزء الحادي عشر.

الحلقة الرابعة - الجزء الثاني عشر.

الحلقة الرابعة - الجزء الثالث عشر.

الحلقة الرابعة - الجزء الرابع عشر.

الحلقة الرابعة - الجزء الخامس عشر.

الحلقة الرابعة - الجزء السادس عشر.

الحلقة الرابعة - الجزء السابع عشر.

الحلقة الرابعة - الجزء الثامن عشر.

مرحبا بكم إخوتي الكرام في الجزء التاسع عشر من الحلقة الرابعة من سلسلة اختبر قدراتك, قمتُ بتقسيم الحلقة الرابعة إلى عدة أجزاء, مُرتبة حسب الصعوبة.

أجزاء هذه الحلقة ستكون خاصة بمسائل الــ OOP.

الإختبار الرابع (الجزء التاسع عشر) :

ليكن لدينا الــ Template Classes الآتي :

template <class T> class point {
T x, y; // coordonnees
public:

point(T abs, T ord) {
x = abs;
y = ord;
}
void affiche();
};

template <class T> void point<T>::affiche() {
cout << "Coordonnees : " << x << " " << y << endl;
}

  1. ماذا يحدث عند تنفيذ الأوامر التالية ؟ (علل إجابتك !)
    point <char> p(60, 65);
    p.affiche();


  2. كيف نُغير تعريف الفئة حتى تكون المُخرجات هكذا :
    Coordonnees : 60 65


سأضع حل السؤال بعد إنتهاء عرض المحاولات.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

1.المخرجات

Coordonnees : < A

2.تغيير الفئة

ربما هكذا


template <class T> class point {
T x, y; // coordonnees
public:

point(T abs, T ord) {
x = abs;
y = ord;
}
void affiche();
};

template <> void point<char>::affiche() {
cout << "Coordonnees : " << (int)x << " " << (int)y << endl;
}
template <class T> void point<T>::affiche() {
cout << "Coordonnees : " << x << " " << y << endl;
}

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

a. سيتم إظهار المحارف التي تملك القيم 60 و 65 في جدول ASCII و هما > و A.

b. لحل المشكلة, يجب تخصيص الفئة في الحالة التي يكون فيها النوع T عبارة عن char و يكون ذلك بإحدى طريقتين :

  1. إضافة تعريف كامل لــ point<char> بما في ذلك تعريف الدوال الأعضاء.
  2. إعادة تعريف الدالة affiche (بما أنها المسؤولة الوحيدة عن سبب الخطأ) و بالتالي تكون الفئة الجديدة هكذا :

template <class T> class point {
T x, y; // coordonnees
public:

point(T abs, T ord) {
x = abs;
y = ord;
}
void affiche();
};

template <class T> void point<T>::affiche() {
cout << "Coordonnees : " << x << " " << y << endl;
}
// version specialisee de la fonction affiche pour le type char

void point<char>::affiche() {
cout << "Coordonnees : " << (int) x << " " << (int) y << endl;
}

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

تم منح النقاط للمشاركات المفيدة.

يُغلق.

أراكم في الجزء العشرين و الأخير من الحلقة الرابعة.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .