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

لنفض الغبار عن القسم جائتكم ألغازي فحلوها

بدأه b.m.s في 11 يوليو 2006 · 37 رد · 5,256 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#26

أخوي الشمري

حياك الله أهم شئ حضورك ومشاركتك معنا فقط تكفينا :P

وبالنسبة للسؤال الأول أنا مما أبي أستعجل أنتظر الأعضاء لين ما يجاوبون وبعدين راح أقرر B) فما أقدر هل إجابتك صحيحة أم لأ :o

وبالنسبة

swهtch(i)

اقتباس
وضعت بدلا من حرف o حرف ه ( هاء) teeth_smile.gif لا اعلم هل هي مقصودة او لا

:D ما كانت مقصوده وتم تعديل الخطأ "لاحظ الهاء وحرف i في نفس المكان في لوحة المفاتيح "وإعذرني عدلت بعد مشاركتك لكن ما أبي الأعضاء يتشتتون بين

الرد الأول والثاني

اقتباس
ولكن اشك بشيء ثاني وهو ان المتغيران j و i اعلنت عنهما اكثر من مرة في نفس المجال .

فسيعترض المصرف .. ويقول المتغير j و i سبق الاعلان عنهما ..

الحل ان بين كل case > >> { }

وهذا الخطأ صح عليك لكن المشكلة إنه مو الخطأ المقصود بالسؤال الظاهر إني كتبت الكود وأنا نايم -_-

ففي الكود السابق كان في خطأين الأول مقصود والثاني اللي طلعته أنت وهو مو المقصود B)

فأعيد أكرر إعتذاري لأني عدلت الكود بعد مشاركتك :)

وبإنتظار مشاركتك بعد التعديل ;)

#27

السلام عليكم ..

بالنسبة للسؤال الأول .. اعتقد مرتين ..

اما السؤال الثاني .. ما كلش متأكد بس اعتقد

 int j = 100;

حيث لا يمكن تعريف مغير دخل ال case :( لو كنت على حاسبتي لجربتها

السؤال الثالث .. ترك .

اما الرابع .. فلم افهم قصدك ..

يعني مثلا لو كانت المتغيرات في قسم ال private فلن تورث .. بس اكيد حل مو منطقي .. لأن سيكون هناك تقيد في استخدامها ..

/index.php/topic/264448-%D8%A7%D9%84%D8%A8%D8%AF%D8%A7%D9%8A%D8%A9-%D9%85%D8%B9-%D8%A7%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF/

 

اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ

#28
اقتباس
حيث لا يمكن تعريف مغير دخل ال case لو كنت على حاسبتي لجربتها

أنا ايضا اقول ذلك .. لازم تضع اقواس داخل كل case ..

السؤال الاخير ( لحسة مخ ) .

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#29
اقتباس
لازم تضع اقواس داخل كل case

جملة case لا تحتاج الى اقواس حسب ما اعرف ..

يعني يجب تعريف المتغير j قبل switch

int i = 0, j;
switch(i){
...
...

/index.php/topic/264448-%D8%A7%D9%84%D8%A8%D8%AF%D8%A7%D9%8A%D8%A9-%D9%85%D8%B9-%D8%A7%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF/

 

اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ

#30
الاخير زمانه كتب:
السلام عليكم ..

اما الرابع .. فلم افهم قصدك ..

يعني مثلا لو كانت المتغيرات في قسم ال private فلن تورث .. بس اكيد حل مو منطقي .. لأن سيكون هناك تقيد في استخدامها ..

أنا أقصد أنك إذا ورثت منها سيعطيك الكمبايلر error لكن إن كونت منها كائن فإنك تستطيع أن تستخدمه وتتعامل معه كأي كائن آخر

واذا كان حل منطقي فلماذا أغلب اللغات وضعت له كلمة محجوزة ;)

وبالنسبة للأسألة الباقية أقول فكروا زين ولا تستعجلون :o

#31

بسم الله الرحمن الرحيم

السلام عليكم

أولا أنا حبيت الاول أجيب على الاسئلة وبعد ذلك أقراء الردود

1-

أعتقد أنة ممكن يحدث خطأ أو Run time error

لان المتغير اللى انا عاوز أعدل فى قيمتة عبارة عن const

فى حالة حدوث Run time error بسبب تعديل فى قيمة ليست مسموح بتغيرها

يعنى ببلدى violation access

أما الخطأ يحدث فى مرحلة الcompile بسبب أن ال I لازم يكون أيضا const

2-

الكود صحيح وهيبطع الBASE لان الدالة اللى ف الderived

الmodifier is private

3-هيشتغل بأذن الله

وفى تلك الحالة عند عمل delete for base class pointer to a derived class object

,this will cause full object will destroy

4-

مرة واحدة لانة سيتعامل مع الarray ك بلوك واحد موجود ف الذاكرة

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

#32

بالنسبة للإجابات جميعها مقنع ماعدا رقم 2 ياريت لو توضحة الاجابة أكتر

بالنسبة لاجابة الاسئلة الثانية

1-

هيطبع مرة واحدة

2-

الخطأ عمل init for j والتصحيح

Declare j and init it out of switch or define it then init it at scope of case.

3 &4 ؟؟!!صراحة لا أدرى :(

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

#33

بالنسبة للسؤال الأول فإذا أردنا الدقـة أكثر فلن تتم طباعـة الكلمـة Hello أبداً بسبب أن الحرف الأول كبير والسي بلس بلس حساسة للأحرف.

بالنسبة للسؤال الثاني: فلا أدري ، ولكن الخطأ الكامل لهذ الكـود أنه لا داعي له فالبلوك switch لن يتم تنفيذه أبد الأبديـن!!!!.

بالنسبة للسؤال الثالث: الأمر أشبه ما يكون بالعـودية (استدعاء الدالة لنفسها) ولكن هذه المرة على مستوى التيمبلت كلاس ؛ في آخر سطر من الكـود الموضوع سيتم أولاً إنشاء كلاس وستكون القيمة للـ i = 10 ثم كلاس آخر بالقيمـة 9 ثم 8 ثم 7 ثم 6 ثم 5 ثم 4 ثم 3 ثم 2 ثم 1 وحينها يتوقف التكرار بسبب وجود النسخـة الثانيـة من الكلاس وتصيح قيمـة المتغير i تساوي الواحد.

بالنسبة للسؤال الرابع: من الممكن فعل ذلك عـن طريق جعل الدالة الباني للكلاس private .. أعتقد ذلك ، لم أجربها بسبب عدم السماح باستخدام كومبايلر .

#34

أعتذر على ترك هذا الموضوع منسي في دهاليس هذا المنتدى ولكن إنشغلت ولم أستطع الرد عليكم إلا الآن وسأترك التعليق على ردودكم لوقت لاحق فأعذروني :unsure:

ونبدأ بإسم الله

اقتباس
1) كم مرة سيتم طباعة Hello في هذا الكود ؟ ممكن تبسيط بسيط ؟

class base {
public:
	base(){}
};

class hello{
public:
	hello(){cout<<"hello\n";}
	hello(base b){cout<<"hello\n";}
};
int main()
{
	hello  *h1 = new hello();
	hello   h2();
	//...
	delete h1;
}

الجواب ببساطة مرة واحدة كيف !!!!!!!!!! :blink: وهي من هذه العبارة

	hello  *h1 = new hello();

طيب والعبارة الثانية

	hello   h2();

هذه عبارة عن تصريح لدالة إسمها h2 لا تستقبل أي بارميتر وترجع كائن من نوع hello !!!!! إنتبه ترى ++C بحر ;)

والآن اللي بعده

اقتباس
2) ما الخطأ في هذا الكود وما هو تصحيحك للخطأ ؟ مع التعليل ؟ <<<< اسئلة دكاترة :lol:

	int i = 0;	
switch(i){
		case 1 :
			int j = 100;
			i += j * 2;
		break;

		case 2:
			i += 8 * 4;
		break;
	}

الجواب إنه يسمع لك بتعريف كائن داخل case لكن لا يسمح لك بإعطائة قيمة أي without initialize لكن لو كتبت

			int j;
												j = 100;

راح يعطيك الكمبايلر إشارة خضراء No Error :o والسبب هو التوافقية بين C و ++C سببت مشاكل وهذا هو أكبرها :wacko:

والآن إلى الثالث :-

اقتباس
3) ماذا يفعل هذا الكود برأيكم ؟

template< int i >
class what{
  public:
	  enum {RESULT = i * what<i-1>::RESULT};
};

class what<1>{
  public:
	  enum {RESULT = 1};
};

int i = what<10>::RESULT;

الجواب هو أنه يحسب مضروب العدد 10 يعني 10 * 9 * 8 * 7 .......* 1 لكن بدون إستخدام دوال فقط عن طريق template وهذه الطريقة تعتبر علم بحد ذاته تذكروا ( metaprogramming )

وأخيراً :-

اقتباس
4) تستطيع منع الكلاسات الأخرى من أن ترث من عندك في أغلب اللغات من خلال كلمة محجوزة واحدة مثل الjava و visual basic.net لكن لا توجد في ال++C كلمة محجوزة لذلك لكن هل يمكن عمل نفس الشئ في C++ بواسطة بعض الخدع ؟؟؟؟؟ إذا كان الجواب بنعم فإكتب الكود ؟

نعم توجد طريقة وذكية أيضا وهذا الكود

class yourClass;

class temp{
		friend class yourClass;
		temp(){}
		temp(const temp & t){}
};

class yourClass : public virtual temp{
public:
		  //.....
		 // ......
		// ......
	   // .....
};

وبسبب إن العلاقة friend ليست وراثية فإن أي class سيرث من yourClass لن يستطيع أن يدخل على البناء temp .

وإنتظروا التعليقات على ردودكم

والسلام عليكم ورحمة الله وبركاته ;)

#35

كأني اول مرة أشاهد السي !!! اكواد شكلها غريب . . . ماهو الكتاب اللي تنصحوني بقراءته :P

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#36
الشمري كتب:
كأني اول مرة أشاهد السي !!! اكواد شكلها غريب . . . ماهو الكتاب اللي تنصحوني بقراءته :P

أخوي الشمري أنت ما شاء الله مبرمج تعرف for-loop و switch و if-statement

فبأعطيك كتاب لو قريته بالكامل " ما هو كثير صدقني " راح تفهم ++C على أصوله

وهذا الكتاب في على هذا الرابط

http://www.zshare.net/download/desktop-rar-90a.html

وأي خدمة حاضرين

#37

أسئلة حلوة بس لو أنا كنت مبرمج سى++ :( :^)

تم تعديل هذه المشاركة بواسطة أمير المبرمجين في 24 أغسطس 2006 في 17:59

#38

Up

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…