أسئلة في البرمجة 3

كل ما يتعلق بمادة البرمجة 3 من استفسارات و مناقشات و محاضرات...........

المشرف: STEEV

Re: أسئلة في البرمجة 3

مشاركة غير مقروءةبواسطة Abd AlrAzAk » الثلاثاء ديسمبر 28, 2010 8:12 am

ite.amena كتب:رغم أن السؤال بسيط جداً ...
بس آسفة لأنني ما عم اقتنع ...ربما لأن لدّي الدّليل على صحة ما أقول ..
أنا رح اسأل , وحاول مرّة تانية أعرف شو الخطأ ...؟, ورح صحح معلوماتي إذا كانت خطأ ...!!!
في جميع الحالات أشكر اجابتكم على سؤالي , والمحاولة في معرفة الخطأ رغم تأخير الوقت...
أرجو أن تعتبرو عدم اقتنعاني بالتّصحيح هو لأن لدّي الكود الذي يثبت صحة ما أقول ..وأيضاً محاضرات الدّكتور...
وأعتذر إذا حدا انزعج من كثرة مشاركتي في هذا السؤال ...

هذا الكود إذا كتبنا الملف .h له واستدعيناه , رح ينفذ تمام ...
CODE: تحديد الكل
 #include "Circle.h"
#include <iostream.h>

Circle::Circle(): Radius(1)
{
}

Circle::Circle(const Circle& OtherCircle): Center(OtherCircle.Center), Radius(OtherCircle.Radius)
{
}

Circle::Circle(Point YourCenter, double YourRadius): Center(YourCenter), Radius(1)
{
   SetRadius(YourRadius);
}

Point Circle::GetCenter() const
{
   return Center;
}

double Circle::GetRadius() const
{
   return Radius;
}

void Circle::SetCenter(Point P)
{
   Center = P;
}

void Circle::SetRadius(double R)
{
   if (R>0)
      Radius = R;
}

void Circle::SetCircle(Point P, double R)
{
   SetRadius(R);
   SetCenter(P);
}

void Circle::PrintCircle() const
{
   Center.PrintPoint();
   cout << "Radius = " << Radius << '\n';
}

Circle::~Circle()


{
}

كلام أبو حمزة صحيح
Only constructors take base initializers

وأنتي بالكود الثاني عم تعملي Initialization للبواني مو لتابع , لأنو كل لي مكتوب هون عبارة عن بواني
أما بالمثال الاول عم تعلمي Initialization لتابع وهاد الشي خطأ
CODE: تحديد الكل
void Point::Setx(int Userx):x(Userx){}
void Point::Sety(int Usery):y(Usery){}

فالـ Initialization فقط للبواني , وماشرط يكون جسم الباني فاضي !! وماشرط فقط للمتحولات من نوع private
وغالبا تستخدم مشان المتحولات const أو بالوراثة مشان استدعاء باني الأب
Abd AlrAzAk
عضو نشيط
عضو نشيط
 
مشاركات: 1381
اشترك في: السبت نوفمبر 01, 2008 6:04 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: دمشق
الكلية: الهـندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة

Re: أسئلة في البرمجة 3

مشاركة غير مقروءةبواسطة ite.amena » الثلاثاء ديسمبر 28, 2010 10:51 am

Abd AlrAzAk كتب:كلام أبو حمزة صحيح
Abd AlrAzAk كتب:
وأنتي بالكود الثاني عم تعملي Initialization للبواني مو لتابع , لأنو كل لي مكتوب هون عبارة عن بواني
أما بالمثال الاول عم تعلمي Initialization لتابع وهاد الشي خطأ

معكم حق ...
بدايةً ما انتبهت ...لذلك أرجو المعذرة...
(يمكن لأنني كنت مقتنة بفكرتي الخاطئة ...
وبعدين فهمت قصدك إنت وزميلك AbuHammzah"......ووجدت أنّه خطأ فادح ...وماانتبهت له ...
الحمد لله يلّي سألت قبل فحص البرمجة ...

13/9/2011
صورة العضو الشخصية
ite.amena
عضو جديد
عضو جديد
 
مشاركات: 125
اشترك في: الثلاثاء يناير 12, 2010 4:17 pm
مكان: - - - - - - - -
الجتس: أنثى
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة

Re: أسئلة في البرمجة 3

مشاركة غير مقروءةبواسطة GTR » الثلاثاء ديسمبر 28, 2010 8:55 pm

مرحبا .. بس في كتير سؤال عن الـ & أنا و عم رد شي من تابع إنو شلون بتصير و شو فائدتها ....
مشان هيك لح إكتب الرد هون :ism:
مثلا أنا وقت يكون عندي هالتابع يلي الترويسة (Header) تبعو هيك ...
CODE: تحديد الكل
int &GiveMeRef()

هي معناها عندي تابع عم يرد int & ! شو معناة هالـ int & !
معناتو عم رد عنوان int .. صح ؟
طيب إذا هيك ...
CODE: تحديد الكل
int* &GiveMeRef()

شو معناة هالشكل الحلو هاد ! :S :wink2:
متل المثال الماضي تمام ... يعني التابع عم يرد عنوان مؤشر على int .. لك مو صح ؟! :imb:
مبلا صح و الله !
إنو ببساطة منشتغل .. و الله أد ما كان الشكل بيخوف :imb: بس و الله بهداوة بيمشي الحال :mrgreen:
المهم بعد ما فمنا ما سبق منجي لمثال كربوج :imb: .. كالتالي .. عندي هالكود :
CODE: تحديد الكل
#include <iostream>
using namespace::std;
int *GlobalPtr ;
int* &GiveMeRef()
{
   (*GlobalPtr)++ ;
   return GlobalPtr ;
}

void main ()
{
   GlobalPtr = new int(5) ;
   int* LocalPtr ;
   LocalPtr = GiveMeRef();
   (*LocalPtr) = 2 ;
   cout << *GlobalPtr << endl ;
}

شو لازم يكون الخرج ... (أرجو التفكير في الإجابة "برواق" أولا .. لأنو مو صعب :ism: )
الناتج إنو لح يطبع 5 بعدين 6 بعدين 2 ...
يلي ما عرف ليش ...
عندي الـ Return Type هو عنوان مؤشر .. صح ؟؟؟
أنا بالـ main عم إعمل Initialize للـ GlobalPtr و حط فيه 5 ...
و بعدين عرفت مؤشر تاني LocalPtr بدون Initialize ... بعدين قلتلو لهالمؤشر ياخد العنوان يلي بيردوا التابع GiveMeRef !
بشوف التابع بلاقي عم يطبع بعدين يغير بقيمة الـ GlobalPtr و يحط فيه 6 بعدين يرجع عنوانو ... بس لمين ؟
للـ LocalPtr عن طريق الـ Return Type تبعو ...
ساعتها هون عم أسند عنوان الـ GlobalPtr للـ LocalPtr و بالتالي صار الـ LocalPtr بيأشر على نفس مكان الـ GlobalPtr
و ساعتها وقت غير عالـ LocalPtr صرت كأني عم غير عالـ GlobalPtr
يعني بعدين وقت إكتب هيك
CODE: تحديد الكل
(*LocalPtr) = 2 ;

معناتها إنو حطلي بالمكان يلي عم يأشر عليه LocalPtr القيمة 2 و يلي هوي نفس مكان الـ GlobalPtr !!
و هكذا عندما نطبع الـ GlobalPtr لح يطبع 2 !
و هكذا تنتهي حكاية هذا اليوم :wink2:
أرجو أن تكون قد أعجبتكم :wink2: و فُهِمَت من قِبَل الجميع :wink:
موفقين يا رب :ism:
الحمد لك ربي
GTR
عضو فعال
عضو فعال
 
مشاركات: 757
اشترك في: الاثنين أكتوبر 13, 2008 8:10 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الرابعة
الاختصاص: ذكاء صنعي

Re: أسئلة في البرمجة 3

مشاركة غير مقروءةبواسطة shams » الثلاثاء ديسمبر 28, 2010 9:43 pm

لو سمحتم ما معنى هذا الخطأ
function call missing argument list; use '&rect::center' to create a pointer to member rect.cpp

؟؟
صورة العضو الشخصية
shams
متميز لعامنا الثالث
متميز لعامنا الثالث
 
مشاركات: 1342
اشترك في: الأحد أكتوبر 04, 2009 10:23 am
الجتس: أنثى
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة

Re: أسئلة في البرمجة 3

مشاركة غير مقروءةبواسطة AbuHammzah » الثلاثاء ديسمبر 28, 2010 10:42 pm

*شمس الإسلام* كتب:لو سمحتم ما معنى هذا الخطأ
function call missing argument list; use '&rect::center' to create a pointer to member rect.cpp

؟؟

يبدو أن هناك معامل ناقص في سطر استدعاء التابع center :???:
AbuHammzah
مشرف منتدى السوفتوير و البرمجيات
مشرف منتدى السوفتوير و البرمجيات
 
مشاركات: 578
اشترك في: السبت ديسمبر 12, 2009 2:07 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: متخرج

Re: أسئلة في البرمجة 3

مشاركة غير مقروءةبواسطة semaz » الأربعاء ديسمبر 29, 2010 9:40 pm

مسا الخير يا جماعة ممكن سؤال بالتقرير التاني :ism:
هلأ بالنسبة لمسألة الموظفين .... المطلوب عبارة عن وراثة ولا تركيب ؟؟؟؟؟؟؟؟؟
يا ريت الرد بسرعة لانو ما بقا في وقت .. :cry:
كي تدرك الحفر الصغيرة أنها لا تتسع لصمتنا.. فلنصمت يا أحبائي للحظة
حتى يهز الصخب في صمتنا الأرض ..و يحطم الصفائح .. فتزلزل كل القبور و تهدم!
...........................................................
صورة العضو الشخصية
semaz
عضو جديد
عضو جديد
 
مشاركات: 18
اشترك في: الخميس يناير 28, 2010 3:58 pm
الجتس: أنثى
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثانية

Re: أسئلة في البرمجة 3

مشاركة غير مقروءةبواسطة $ M.Y.T $ » الأربعاء ديسمبر 29, 2010 9:54 pm

semaz كتب:مسا الخير يا جماعة ممكن سؤال بالتقرير التاني :ism:
هلأ بالنسبة لمسألة الموظفين .... المطلوب عبارة عن وراثة ولا تركيب ؟؟؟؟؟؟؟؟؟
يا ريت الرد بسرعة لانو ما بقا في وقت .. :cry:


:???: لا أكيد المخطط العام هو وراثة مو تركيب

يس ممكن نحل بعض المشاكل الصغيرة او بعض الطلبات بالتركيب :imb:

بس المسألة ككل وراثة :iok:
قال تعالى:
"ما يفعلُ اللهُ بِعذابِكُمْ إنْ شَكَرتُمْ وآمنتُم وكانَ اللهُ شَاكِراً عَليمَاْ"


مدونتـــــي
صورة العضو الشخصية
$ M.Y.T $
عضو فعال
عضو فعال
 
مشاركات: 989
اشترك في: الأحد سبتمبر 27, 2009 8:23 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة

Re: أسئلة في البرمجة 3

مشاركة غير مقروءةبواسطة hal » السبت يناير 01, 2011 3:19 pm

لو سمحتوا كيف فينا نعبر عن المجموعة في c++ set of
لاني بدي أتحقق اذا كان اسم الموظف خالي من الأرقام مثلا ............................أرجو الإجابة بسرعة
صورة العضو الشخصية
hal
عضو جديد
عضو جديد
 
مشاركات: 120
اشترك في: الأحد سبتمبر 27, 2009 4:57 pm
الجتس: أنثى
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة

Re: أسئلة في البرمجة 3

مشاركة غير مقروءةبواسطة hal » السبت يناير 01, 2011 3:54 pm

حدا يجاوبني :cry: :cry:
صورة العضو الشخصية
hal
عضو جديد
عضو جديد
 
مشاركات: 120
اشترك في: الأحد سبتمبر 27, 2009 4:57 pm
الجتس: أنثى
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة

Re: أسئلة في البرمجة 3

مشاركة غير مقروءةبواسطة Watary » السبت يناير 01, 2011 6:34 pm

بل يوجد بنية معطيات تسمى set وهي بنية رائعة جدا ..
وهي مثال:
CODE: تحديد الكل
#include <set>

set <int> Accepted_Problems;
         
int main(){
      Accepted_Problems.insert(any_int);
      cout<<Accepted_Problems.count(any_int)<<endl; 
      for(set<int>::iterator i=Accepted_Problems.begin();i!=Accepted_Problems.end();i++)
         cout<<*i<<endl;
}

فيكم تشوفو ال tutorial الخاص بموقع Cplusplus.com عن ال STL كتير حلو set
set
بالتوفيق.
"يا أيُّها الناسُ اتقوا ربكم إن زلزلةَ الساعةِ شيءٌ عظيم
يوم ترونها تذهلُ كلُّ مرضعةٍ عما أرضعت وتضعُ كلُّ ذاتِ حملٍ حملها
وترى الناسَ سكارى وماهم بسكارى ولكنَّ عذاب الله شديد.."
صورة العضو الشخصية
Watary
عضو فعال
عضو فعال
 
مشاركات: 390
اشترك في: الخميس أكتوبر 23, 2008 7:38 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الرابعة
الاختصاص: ذكاء صنعي

Re: أسئلة في البرمجة 3

مشاركة غير مقروءةبواسطة ZEIN » السبت يناير 01, 2011 6:40 pm

AbuHammzah كتب:لا يوجد بنية معطيات set مبيتة في لغة C++..
لذلك علينا تمثيلها يدوياً باستخدام سلسلة مترابطة مثلاً ..


Watary كتب:بل يوجد بنية معطيات تسمى set وهي بنية رائعة جدا ..

صح :iok: :iok: لسا المحاضرة الماضية أخدناها :ism:
G & W & Z & R
ZEIN
متميز لعامنا الثالث
متميز لعامنا الثالث
 
مشاركات: 1237
اشترك في: الخميس أكتوبر 01, 2009 10:40 pm
الجتس: أنثى
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة

Re: أسئلة في البرمجة 3

مشاركة غير مقروءةبواسطة Mr.TAMER » السبت يناير 01, 2011 10:34 pm

بالنسبة للـ set، هذا رابط لسؤال (لي) متعلق بها في موقع StackOverflow في أجوبته (خصوصاً الأول) بعض الشرح المفيد عن كيفية البحث فيها.....

What is the set-like data structure in c++

تقبلوا مروري :iok:
Volunteer at Wikilogia

Member of WikiTechie

Contributor in Wiki ITE... Let's open-source our university

All with Proud & Pleasure :)
صورة العضو الشخصية
Mr.TAMER
عضو فعال
عضو فعال
 
مشاركات: 721
اشترك في: الجمعة يناير 01, 2010 12:46 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة

Re: أسئلة في البرمجة 3

مشاركة غير مقروءةبواسطة sema » الأحد يناير 02, 2011 9:32 am

ما عم افهم stl حتى لما حضرت المحاضرة ما فهمت
بدي مسساعدة شرح بسيط عنها ؟
او اذا كتاب ادرسوها منو
اخيرااااااااااااااااااااااا تانية
صورة العضو الشخصية
sema
عضو فعال
عضو فعال
 
مشاركات: 349
اشترك في: الأربعاء نوفمبر 11, 2009 9:14 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثانية
الاختصاص: غير ذلك

Re: أسئلة في البرمجة 3

مشاركة غير مقروءةبواسطة Mo7ammed » الأحد يناير 02, 2011 10:12 pm

السلام عليكم ..
بدي اسالكم سؤال ياريت تجوبونب عليه باسرع وقت ...
كيف بدي لاقي عدد الفراغات الموجوي في سلسلة محرفية بطريقة عودية ..
--------> على قدر أهل العزم تأتي العزائم <--------
صورة العضو الشخصية
Mo7ammed
عضو جديد
عضو جديد
 
مشاركات: 15
اشترك في: الأحد سبتمبر 26, 2010 10:55 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة البعث
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الأولى

Re: أسئلة في البرمجة 3

مشاركة غير مقروءةبواسطة GTR » الأحد يناير 02, 2011 10:29 pm

Polymorphism


مرحبا :) ... سؤال الـ Polymorphism للكل مع بعض :ism: :
لح إحكي نظري بعدين مثال ... :wink:
- Polymorphism intro:
أول شي الـ Polymorphism شغلة كتير حلوة و سهلة .. و ما بعرف ليش الكل بيرتعب من أسمها ! .. مشان هيك روقوا إنتو و عم تقروا و ارتاحوا لأنو لح تصلوا إنتو و عم تقروا أخر سطر و الابتسامة (تبع الفهم) تعلو وجوهكم :wink2: :mrgreen:
يعني تعددية أشكال و طلعت روحكون منها :imb: ... بس شو معناة تعددية الأشكال
معناتها إني اتعامل مع الهرمية تبعي بشكل ديناميكي كتير بالـ Run time بشكل إربط بين الآباء و الأبناء بطريقة تضل فيها خصائص الوراثة محققة .. بس تضيف عليها ديناميكية جديدة ما كانت محققتلي من قبل .
فمتو شي لهون ؟ :imb: :mrgreen:
شو ما كان الجواب :imb: مو مشكلة .. منكمل ...
كيف بحقق الـ Polymorphism :ism:
عن طريق المؤشرات + Virtual .... كيف ؟ لح نحكي ...
توابع الـ Virtual بالـ C++ منستخدمها وقت يكون عندي ورائة (بشكل ديناميكي)
شلون بحقق هالوراثة .. بحققها عن طريق المؤشرات ... كيف ؟
بدي يكون أب عم يأشر عالابناء و ساعتها بهالطريقة ساوي مؤشر واحد من نمط الأب
و بروح افتل عالأبناء واحد واحد و ساوي العمليات يلي بدي ياها بكل ابن بشكل ديناميكي كتيييير
و هي هيي فكرة الـ Polymorphism مشان ما قعد كل مرة اشتغل شغلي و اكتب كل توابعي عند الأب و الابناء بشتغلها Polymorphism و ساعتها كل الشغل لح يصير وقت الـ Runtime
Virtual
مشان الـ Virtual هيي أساس الـ Polymorphism و بالتالي أنا بحط تابع و ليكن PrintThisClass عند الأب Dad و بخلي عدة أبناء Son يرتو من هالـ Dad و يكون عندون نفس التابع PrintThisClass بس بغير Body .. تمام لهون ؟
هلق بهالمثال التالي إذا كان عندي مؤشر من الأب و عم يأشر عشي ابن و رحت استدعيت عن طريقو التابع PrintThisClass شو لح يطبع ؟ (بدون Virtual هون)
CODE: تحديد الكل
#include <iostream>
using namespace std ;
class Dad
{   
   public :void PrintThisClass() const
   {
      cout << "in Dad" << endl ;
   }
};
class Son : public Dad
{   
   public: void PrintThisClass() const
   {
      cout << "in Son" << endl ;
   }
};

void main ()
{
   Dad *DadPtr = new Dad ;
   Son *SonPtr = new Son ;
   DadPtr = SonPtr ;
   DadPtr->PrintThisClass();
}

لح يطبع InDad
لح يطبع تبع الأب شو ماكان .. !! مع إني مأشر على نمط من الابناء !
هادا كلو لأنو ما عندي Virtual و بالتالي لح يطبع المؤشر على حسب النمط يلي هوي اتعرف فيه أول شي (يلي هوي هون من نمط الأب)
هلق بخلي هالتابع Virtual عند الأب و لنشوف شو لح يصير .. (مع Virtual هون)
CODE: تحديد الكل
#include <iostream>
using namespace std ;
class Dad
{   
   public : virtual void PrintThisClass() const
   {
      cout << "in Dad" << endl ;
   }
};
class Son : public Dad
{   
   public: virtual void PrintThisClass() const
   {
      cout << "in Son" << endl ;
   }
};

void main ()
{
   Dad *DadPtr = new Dad ;
   Son *SonPtr = new Son ;
   DadPtr = SonPtr ;
   DadPtr->PrintThisClass();
}

لح يطبع In Son
هون وقت ساوي مؤشر من نمط Dad و أشر فيه على نمط من الابناء Son.. و استدعي هالتابع الـ PrintThisClass لح يطبع Body التابع يلي عند الأبناء !!! (يعني بطبع التابع يلي عند النمط يلي عم أشّر عليه) و مو يلي عند الأب ... متل ما كان يساوي بدون الـ Virtual
يعني بالنهاية و بالمختصر ...
إذا كان عندي مؤشر من الأب و عندي أولاد و كلون عندون تابع اسمو PrintThisClass بس كل واحد إلو Body شكل ...

ما عندي Virtual :
لح يطبع تبعاً لنمط الأب (النمط نفسو يلي عرفت فيه المؤشر)
يعني التابع يلي عند Dad متل المثال الأول

عندي Virtual :
لح يطبع تبعا للنمط يلي عم أشر عليه حالياً (ابن أول أو ثاني أو ثالث)
يعني التابع يلي عند الـ Son متل المثال التاني
خلص الـ Polymorphism !! هي هيي قصتو ! :ism:

ملاحظات أخيرة (نكشات) بتجي بالفحص :
أول وحدة :
إنو تابع الـ Virtual بيكون Virtual من النقطة يلي عم يتحدد عندها و تحت ! شو يعني !
يعني إذا كان هيك (بس عرفت Virtual عند الأب و قمتو من عند الابن )...

CODE: تحديد الكل
#include <iostream>
using namespace std ;
class Dad
{   
   public : virtual void PrintThisClass() const
   {
      cout << "in Dad" << endl ;
   }
};
class Son : public Dad
{   
   public: void PrintThisClass() const
   {
      cout << "in Son" << endl ;
   }
};

void main ()
{
   Dad *DadPtr = new Dad ;
   Son *SonPtr = new Son ;
   DadPtr = SonPtr ;
   DadPtr->PrintThisClass();
}

هون لح يضل عم يطبع صح .. لأني عرفت Virtual عند الأب قام بيكون لحالو (بدون ما اكتبو عند الأبناء) كمان Virtual !! و لح يطبع صح ... In Son
مثال تاني :
CODE: تحديد الكل
#include <iostream>
using namespace std ;
class Dad
{   
   public : virtual void PrintThisClass() const
   {
      cout << "in Dad" << endl ;
   }
};
class Son : public Dad
{   
   public: void PrintThisClass() const
   {
      cout << "in Son" << endl ;
   }
};

class DummySon : public Son
{   
   public: void PrintThisClass() const
   {
      cout << "in DummySon" << endl ;
   }
};

void main ()
{
   Dad *DadPtr = new Dad ;
   Son *SonPtr = new Son ;
   DummySon *DummySonPtr = new DummySon ;
   DadPtr = DummySonPtr ;
   DadPtr->PrintThisClass();
   int i ;
   cin >> i ;
}

كمان هون لح يطبع in DummySon صح ...
طيب إذا هيك ... (بس عرفت الـ Virtual بالـ Son .. يعني بنص الهرمية تبعي )
CODE: تحديد الكل
#include <iostream>
using namespace std ;
class Dad
{   
   public :  void PrintThisClass() const
   {
      cout << "in Dad" << endl ;
   }
};
class Son : public Dad
{   
   public: virtual void PrintThisClass() const
   {
      cout << "in Son" << endl ;
   }
};

class DummySon : public Son
{   
   public: void PrintThisClass() const
   {
      cout << "in DummySon" << endl ;
   }
};

void main ()
{
   Dad *DadPtr = new Dad ;
   Son *SonPtr = new Son ;
   DummySon *DummySonPtr = new DummySon ;
   DadPtr = DummySonPtr ;
   DadPtr->PrintThisClass();
}

لح يطبع in Dad !!
هون ساعتها عند الأب ما لح تكون Virtual القصة ! .. يعني بس من عند الـSon و لتحت ! و مشان هيك رجع للحالة الأولى لأنو ما شاف Virtual و بالتالي طبع تبعا للنمط يلي هوي اتعرف فيه (Dad)
شوفو هيك ...(نفس يلي قبل بس غيرت الـ main )
CODE: تحديد الكل
#include <iostream>
using namespace std ;
class Dad
{   
   public :  void PrintThisClass() const
   {
      cout << "in Dad" << endl ;
   }
};
class Son : public Dad
{   
   public: virtual void PrintThisClass() const
   {
      cout << "in Son" << endl ;
   }
};

class DummySon : public Son
{   
   public: void PrintThisClass() const
   {
      cout << "in DummySon" << endl ;
   }
};

void main ()
{
   Dad *DadPtr = new Dad ;
   Son *SonPtr = new Son ;
   DummySon *DummySonPtr = new DummySon ;
   SonPtr = DummySonPtr ;
   SonPtr->PrintThisClass();
}

لاحظو إنو لح يطبع DummySon ! و لح تكون القصة Virtual لأنو معرف عند الأب تبع الـ DummySon إنو هوي Virtual :wink:



تاني وحدة :
انتبهوا يكون التابع Overloading فقط !! و يكون Virtual بنفس الوقت ! هي دائما بتخربط ... لأنو ما لح يكون متل ما لكون مفكرين ...
يعني هيك ...
CODE: تحديد الكل
#include <iostream>
using namespace std ;
class Dad
{   
   public :  virtual void PrintThisClass() const
   {
      cout << "in Dad" << endl ;
   }
};
class Son : public Dad
{   
   public:  virtual void PrintThisClass(int i) const
   {
      cout << "in Son" << endl ;
   }
};

void main ()
{
   Dad *DadPtr = new Dad ;
   Son *SonPtr = new Son ; 
   DadPtr = SonPtr ;
   DadPtr->PrintThisClass();

}

هون بالعادة بيطبع In Son صح ؟؟
بس لاحظو إنو عندي بتابع الابن لازم يكون إلو Parameters و بالتالي ما عت صفي نفس تابع الأب و بالتالي هون لح يطبع in Dad !!!

إن شاء الله يكون مشي الحال مع الكل :ism: ..
فيكون ترجعو عسلايدات الدكتور منيحة .. و في سلايدات الصيف السلايد رقم 13 كمان مشروح كل شي
هنيك :ism: :iok:
و فيكون تختبروا حالكون إذا فمتو لما لاء :imb: .. بتساوو الفحص الأخير تبع دورة الصيف .. كنت حاطط يمكن شي 10 أسئلة كتير حلوين عن الـ Polymorphism :imb: :wink2: بيشملو كل شي ... و وقتها إنتو بدّعتو كتير فيهون :imb: :mrgreen:
إن شاء الله تكون خلصت قصة اليوم بسلام :wink2: و إن شاء الله تكونوا وصلتوا لهون إنتو و عم تبتسموا لأنو فمتو الـ Polymorphism :ism:
موفقين يا رب بمشاريعكون ووظايفكون .. و إدعولنا كمان إلنا :ism:
الحمد لك ربي
GTR
عضو فعال
عضو فعال
 
مشاركات: 757
اشترك في: الاثنين أكتوبر 13, 2008 8:10 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الرابعة
الاختصاص: ذكاء صنعي

Re: أسئلة في البرمجة 3

مشاركة غير مقروءةبواسطة حيفا » الأحد يناير 02, 2011 11:27 pm

مرحبا
عندي سؤال بال char
بس أكتب هاد الكود ما عم يقرأ ال name


CODE: تحديد الكل
else if (n==4)
  {
     
     char name[20];
      cout<<"enter the name"<<endl;
      cin.getline(name,20,'\n');
       cout<<name<<endl;
}

"طبعا ال n وقتها بتكون تساوي 4 "
بس اذا كتبت نفس التعليمات براة ال else بنفذ عادي وبقرأ ال name :imb:
أنا بتنفس حرية
صورة العضو الشخصية
حيفا
عضو جديد
عضو جديد
 
مشاركات: 136
اشترك في: السبت سبتمبر 26, 2009 10:52 pm
مكان: ليس لوطني عنوان..
الجتس: أنثى
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة

Re: أسئلة في البرمجة 3

مشاركة غير مقروءةبواسطة Qusay » الاثنين يناير 03, 2011 12:24 am

حيفا كتب:مرحبا
عندي سؤال بال char
بس أكتب هاد الكود ما عم يقرأ ال name


CODE: تحديد الكل
else if (n==4)
  {
     
     char name[20];
      cout<<"enter the name"<<endl;
      cin.getline(name,20,'\n');
       cout<<name<<endl;
}

"طبعا ال n وقتها بتكون تساوي 4 "
بس اذا كتبت نفس التعليمات براة ال else بنفذ عادي وبقرأ ال name :imb:


الكود داخل ال if صح والشرط متل ما عم تقولي كمان صح لهيك عالاغلب بيكون في تناقض بين if يللي قبل ال else ويللي بعدها
ألم يأن للذين آمنوا أن تخشع قلوبهم لذكر الله
Qusay
عضو جديد
عضو جديد
 
مشاركات: 35
اشترك في: الخميس أغسطس 19, 2010 1:48 am
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة
الاختصاص: غير ذلك

Re: أسئلة في البرمجة 3

مشاركة غير مقروءةبواسطة Zeina » الاثنين يناير 03, 2011 12:29 am

CODE: تحديد الكل
cout<<"Plz Enter The Full Name Of The Employee  " << endl;
         cin.getline(n,50,'\n');      
         cout<<"enter The Adress" <<endl;
         cin.getline(a,50,'\n');

مرحبا عندي سؤال : انو لما عم استخدم تعليمة ال cin.getlines أكتر من مرة بيصير بيعلق و ما بيقرا غير مرة وحدة ليش؟ :cry:
يعني المفروض بهالكود يلي كاتبته انو تطلعلي رسالة لأدخل الاسم الكامل و بعدين أدخل أنا و بعدين تطلع رسالة انو أدخل العنوان..
بس يلي عم يصير معي انو عم تطلع رسالة أدخل الاسم الكامل و بعدا فورا رسالة العنوان من دون ما يخليني اقدر دخل شي
شو ممكن يكون السبب ؟
الكود كله صح
بس عم تطلعلي هالمشكلة انو أغلب الأحيان بيطبع و ما بخليني دخل شي :evil:
Zeina
عضو جديد
عضو جديد
 
مشاركات: 141
اشترك في: الخميس نوفمبر 05, 2009 8:10 pm
الجتس: أنثى
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الثالثة

Re: أسئلة في البرمجة 3

مشاركة غير مقروءةبواسطة asecrety » الاثنين يناير 03, 2011 12:39 am

السلام عليكم

عذرا على الإزعاج و لكن الأمر طارئ ... و أرجوا الإجابة بسرعة و لو أن السؤال "سخيف" بالنسبة لكم إلا أن المشكلة أن لا علم لي بطريقة كتابة كود C++

هذا برنامج يقرأ سلسلة محرفية و يعيد عدد الفراغات الموجودة بعد حسابها بطريقة عودية ...
CODE: تحديد الكل
#include<iostream.h>
const int n=10;   int s=0;
int find(char a[n],int n)
{
if (n==0)
  {
    return s;
  }
else if (a[n]==' ')
  {
    s++;
    find (a,n-1);
  }
}
main()
{
  char a[n];
  cin>>a;
  int t;
  t=find(a,n);
    cout<<t;
  getchar();
  return 0;
}


يقوم بإرجاع 0 دائما :imb:

ما الخطأ فيه ؟ :???:
بسم الله
لا إله إلا الله .... محمد رسول الله
صورة العضو الشخصية
asecrety
عضو فعال
عضو فعال
 
مشاركات: 836
اشترك في: الاثنين أغسطس 30, 2010 1:34 pm
الجتس: ذكر
الشهادة الثانوية: -
الجامعة: -
الكلية: -
المرحلة الدراسية: غير ذلك

Re: أسئلة في البرمجة 3

مشاركة غير مقروءةبواسطة GTR » الاثنين يناير 03, 2011 12:45 am

smart smile كتب:
CODE: تحديد الكل
cout<<"Plz Enter The Full Name Of The Employee  " << endl;
         cin.getline(n,50,'\n');      
         cout<<"enter The Adress" <<endl;
         cin.getline(a,50,'\n');

مرحبا عندي سؤال : انو لما عم استخدم تعليمة ال cin.getlines أكتر من مرة بيصير بيعلق و ما بيقرا غير مرة وحدة ليش؟ :cry:
يعني المفروض بهالكود يلي كاتبته انو تطلعلي رسالة لأدخل الاسم الكامل و بعدين أدخل أنا و بعدين تطلع رسالة انو أدخل العنوان..
بس يلي عم يصير معي انو عم تطلع رسالة أدخل الاسم الكامل و بعدا فورا رسالة العنوان من دون ما يخليني اقدر دخل شي
شو ممكن يكون السبب ؟
الكود كله صح
بس عم تطلعلي هالمشكلة انو أغلب الأحيان بيطبع و ما بخليني دخل شي :evil:


هوي بالـ c++ في مشكلة بالـ getline و هيي إنو بيتعامل مع الـ Buffer و بالتالي وقت يملا الـ Buffer (و نحنا ما منعرف إيمتى بيملا ) ما عت منقدر نحط فيه و بالتالي ما عت يخلينا نأدخل
و مشان هيك منسخدم ignore يلي أخدتوها ... بس منرجع لمشكلة و هيي إنو حتى الـ ignore أحيانا بدي استدعيها كزا مرة لحتى فضي هالـ Buffer يلي عندي ... و حتى الدكتور عفكرة حاطط بالسلايدات بتذكر إنو ما فينا نعرف عدد تعليمات الـ ignore اللازمة لحتى إقدر إرجع اكتب من جديد و يظبط شغلي !! :imb:
و هون بتصفى القصة غليظة شوي :imb:
مشان هيك أحسن شي جربي ignore و إن شاء الله بيمشي الحال :ism: :wink:
الحمد لك ربي
GTR
عضو فعال
عضو فعال
 
مشاركات: 757
اشترك في: الاثنين أكتوبر 13, 2008 8:10 pm
الجتس: ذكر
الشهادة الثانوية: سورية
الجامعة: جامعة دمشق
الكلية: الهندسة المعلوماتية
المرحلة الدراسية: السنة الرابعة
الاختصاص: ذكاء صنعي

السابقالتالي

العودة إلى البرمجة 3

الموجودون الآن

المستخدمون المتصفحون لهذا المنتدى: لا يوجد أعضاء مسجلين متصلين و 1 زائر

cron