PI Team π ❷
Open in Telegram
PI Team فريق تطوعي من طلاب دفعة 2025- 2030 في كلية الهندسة المعلوماتية جامعة حمص، يهدف لمساعدة الطلاب في الدراسة ونشر المحاضرات والملفات الهامة دون مقابل.
Show moreThe country is not specifiedEducation63 666
1 427
Subscribers
-124 hours
-37 days
-1330 days
Posts Archive
1 427
الحمد لله
بين 20 الى 30 علامة اجت من الشغلات يلي موجودة ضمن القناة
خصوصاً المؤشرات والملفات.. المفروض يلي شاف الشغلات يلي بعتناها يسكر هي الاسئلة
طبعاً الشغلات ما اجت على حالها (ممكن افكار اسهل او على نمطها)
1 427
نؤكد على اهمية اطفاء أجهزتكم والمنبهات بشكل كامل قبل الدخول للقاعة الامتحانية
هي شغلة بايدنا نحن… خلونا نوقفها لان عنجد مزعجة
1 427
#include <iostream> using namespace std; template<typename T> class Base { private: int y = 10; public: Base() { cout << "B"; } virtual int GetY() { return y; } virtual int GetM() = 0; void setVal(int a) { y = a; } virtual ~Base() {} }; template<typename T> class Derived : public Base<T> { private: int y = 20; int m = 100; public: Derived() { cout << "D"; } int GetY() override { return y; } int GetM() override { return m; } void setVal(int a) { y = a + 5; } }; int main() { Base<int>* ptr = new Derived<int>(); cout << " "; ptr->setVal(30); cout << ptr->GetY() << " " << ptr->GetM() << endl; delete ptr; return 0; }
1 427
انظر إلى الكود التالي:
List<int>* ptr = new LinkedList<int>();
ptr->push(10);
ptr->push(20);
ptr->push(30);
cout << (*ptr)[1];
ما هو الخرج المتوقع؟
أ) 10
ب) 20
ج) 30
د) خطأ ترجمة لأن operator[] غير موجود في List
الجواب الصحيح: ب1 427
انظر إلى الكود التالي داخل صفّ LinkedList:
T pop() override {
if (!end) throw runtime_error("Cannot pop from empty list");
T value = end->data;
LinkedListItem<T>* toDelete = end;
if (start == end) {
start = end = nullptr;
} else {
end = end->prev;
end->next = nullptr;
}
delete toDelete;
this->len--;
return value;
}
ماذا يحدث إذا استدعينا pop() والقائمة تحتوي على عنصر واحد فقط؟
أ) يحدث خطأ تنفيذ (Runtime Error)
ب) يتم حذف العنصر وتصبح start و end تساوي nullptr
ج) يتم حذف العنصر لكن start تبقى تشير إليه
د) لا يحدث شيء لأن الشرط if (start == end) غير صحيح
الجواب الصحيح: ب1 427
class List {
public:
virtual void print() {
cout << "List" << endl;
}
};
class ArrayList : public List {
public:
void print() override {
cout << "ArrayList" << endl;
}
};
int main() {
List* ptr = new ArrayList();
ptr->print(); // شو رح يطبع؟
}
الخرج :
ArrayList
الشرح :
يتم استدعاء التابع print للصف الي يؤشر عليه المؤشر ptr وهو الابن
Arraylist
وبالتالي تنفيذ print تبعه
(Ptr )
هو مؤشر من نوع list يشير إلى Arraylist1 427
class List {
public:
virtual void print() {
cout << "List" << endl;
}
};
class ArrayList : public List {
public:
void print() override {
cout << "ArrayList" << endl;
}
};
int main() {
List* ptr = new ArrayList();
ptr->print(); // شو رح يطبع؟
}
الخرج :
ArrayList
الشرح :
يتم استدعاء التابع print للصف الي يؤشر عليه المؤشر ptr وهو الابن
Arraylist
وبالتالي تنفيذ print تبعه
(Ptr )
هو مؤشر من نوع list يشير إلى Arraylist1 427
الكود الاول جوابه الخيار الثانيالشرح : المدمر بالصفّ الأساسي List مش virtual. لذلك لما نعمل delete على مؤشر من نوع الأب، بينفذ مدمر الأب فقط، ومدمر الابن ما بينفذ.
الكود الثاني جوابه اول خيارالشرح : لأن المدمر بالصفّ الأساسي virtual، عند عمل delete على مؤشر من نوع الأب، بينفذ أولاً مدمر الابن (ArrayList)، بعدين مدمر الأب (List).
1 427
A-ArrayList destructor
List destructor
B-List destructor
C-List destructor
ArrayList destructor
D- خطأ ترجمة
1 427
#include <iostream> using namespace std; class List { public: virtual ~List() { cout << "List destructor" << endl; } }; class ArrayList : public List { public: ~ArrayList() { cout << "ArrayList destructor" << endl; } }; int main() { List* ptr = new ArrayList(); delete ptr; return 0; }
1 427
A-ArrayList destructor
List destructor
B-List destructor
C-List destructor
ArrayList destructor
D- خطأ ترجمة
