السلام عليكم ورحمته تعالى وبركاتو
إخوتي الكرام
لدي وظيفة يجب أن أقدمها لدكتور الجامعة غدا مساءاً
ولكن للاسف حتى الآن لم استطع حلها
فهل من الممكن مساعدتي في ذلك
نص الوظيفة هو
نظرية فيثاغورث Pythagoras
تقول نظرية فيثاغورث إن مجموع مربعي الضلعين القائمين في مثلث قائم الزاوية يساوي مربع الوتر
نريد في هذه الوظيفة أن نبحث عن كافة الأعداد الصحيحة التي تحقق هذه النظرية ضمن مجال ما يحدده المستخدم
المطلوب:
أكتب برنامجاً يقوم بما يلي
1- قراءة عدد صحيح من المستخدم max
2- إيجاد جميع الثلاثيات من الأعداد الصحيحة (a,b,c) التي تقع ضمن المجال [0..max] و تحقق نظرية فيثاغورث كما يلي : a*a + b*b = c*c
الفكرة الخوارزمية:
حلقة تكرارية تحسب مربع a (a*a)
حلقة تكرارية تحسب مربع b (b*b)
حساب جذر المجموع sqrt( (a*a)+ (b*b) ) = fc
إذا ( القيمة الفعلية fc هي قيمة عدد صحيح **) نفّذ
اكتب قيم a, b, c
3- يجب طباعة هذه الثلاثيات على الخرج في ستة أعمدة كما في الشكل التالي:

**
fc هو عموماً قيمة كسرية، كي نختبر أن قيمته عدد صحيح نقوم بالاختبار التالي:
abs( fc – floor(fc) ) < eps (1)
eps هي (epsilon ) قيمة صغيرة جداً تقارب الصفر eps=0.00000001
floor(fc) تابع رياضي يعطي الجزء الصحيح من العدد الكسري: مثلاً floor(6.3) تساوي 6
الآن عرفت معنى العلاقة (1) : الجزء الكسري من العدد fc هو تقريباً صفر وبالتالي fc هي قيمة عدد صحيح
التوابع الحسابية: floor, abs, sqrt وتوابع أخرى تستدعى من الصف Math : الجذر التربيعي لـ 4 Math.sqrt( 4 )
لاحظ أنه كان بإمكاننا الاستعاضة عن العلاقة (1) بالعلاقة التالية:
fc == floor(fc) (2)
لكنها تستخدم شرط المساواة بين عددين كسريين. ولا ينصح باستخدام هذا الشرط لأنه في كثير من الأحيان لا يمكننا الحصول على مساواة بين عددين كسريين.
لذلك سنستخدم في مسألتنا العلاقة (1) فقط، ولن يقبل أي حل يستخدم العلاقة (2).
ملاحظات:
1- تُستخدَم أسماء المتحولات كما هو وارد في نص المسألة
2- يلتزم الجميع بالخوارزمية الواردة في نص المسألة ( حلقتان متداخلتان)
3- يمنع استخدام بنى التحكم أو بنى المعطيات غير المعطاة في الدروس السابقة: لا تستخدم (for,switch) و لا بنية الجداول array.
----------------------------
وشكرا جزيلا لكم سلفا