الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

مغلق
بدأه Snack3r في 16 سبتمبر 2012 · 3 رد · 886 مشاهدة · في اختبر قداراتك
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

لتكن لدينا التعريفات التالية للــ Functions Templates :

template <class T, class U> void fct(T a, U b) {
    ...
} // patron I

template <class T, class U> void fct(T * a, U b) {
    ...
} // patron II

template <class T> void fct(T, T, T) {
    ...
} // patron III

void fct(int a, float b) {
    .....
} // fonction IV

مع الإعلانات التالية :

int n, p, q;
float x, y;
double z;

من ضمن الكتابات الآتية, ما هي الإستدعاءات الصحيحة ؟ و ما هي تواقيع الــ functions instantiated ؟

fct(n, p); // appel I
fct(x, y); // appel II
fct(n, x); // appel III
fct(n, z); // appel IV
fct(&n, p); // appel V
fct(&n, x); // appel VI
fct(&n, &p, &q) // appel VII

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

#2

أظن كلها صحيحة

fct(n, p); // appel I
//fct(<U:int>, <T:int>) 
fct(x, y); // appel II
//fct(<U:float>, <T:float>) 
fct(n, x); // appel III
//fct(int, float) 
fct(n, z); // appel IV
//fct(<U:int>, <T:double>) 
fct(&n, p); // appel V
//fct(<U:int*>, <T:int>) 
fct(&n, x); // appel VI
//fct(<U:int*>, <T:float>) 
fct(&n, &p, &q); // appel VII
//fct(<T:int*>, <U:int*>, <T:int*>)

[سبحان الله و بحمده, سبحان الله العظيم]

#3

لا, العبارتين 5 و 6 خاطئتين لوجود غموض (ambigüité) في الإستدعاء :)

التصحيح :

Ici, on fait appel à la fois à une surdéfinition (patrons I, II et III) et à une spécialisation de patron (fonction IV).

I) patron I void fct (int, int) ;

II) patron I void fct (float, float) ;

III) fonction IV void fct (int, float) ;

IV) patron I void fct (int, double) ;

V) erreur : ambigüité entre fct (T, U) et fct (T*, U)

VI) erreur : ambigüité entre fct (T, U) et fct (T*, U)

VII) patron III void fct (int *, int *, int *) ;

تم تعديل هذه المشاركة بواسطة أحمد الشنقيطي في 16 سبتمبر 2012 في 00:53 — السبب: تنسيق المشاركة.

هذا الموضوع مغلق.

مواضيع مشابهة