منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : [مسابقة الخوارزمية 3] - الجولة الاولى
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3 4 5
صراحة بحثت كثيرا عن قانون الرياضيات
وهذا كان اجتهادي

واذا كان الحل مقبول ارسل المشروع
السلام عليكم
ان شاء الله هذه المرة يكون البرنامج صحيح
(19-12-16, 10:15 AM)عبدالله الصافي كتب : [ -> ]صراحة بحثت كثيرا عن قانون الرياضيات
وهذا كان اجتهادي

واذا كان الحل مقبول ارسل المشروع

توجد نسبة خطأ صغيرة

عند التجريب على


R: 1001
A: -500.5, 866.891
B: 707.813, 707.813

يعطي 1311.57 المفروض 1310.31


وكذلك لبعض القيم الكبيرة التي جربتها / الفرق يظهر في القيم الكبيرة


ربما قيمة PI ليست دقيقة ؟
(19-12-16, 10:29 AM)samira20 كتب : [ -> ]السلام عليكم
ان شاء الله هذه المرة يكون البرنامج صحيح


نعم هذه المرة صحيح 100% Smile


الاخت samira20 حصلت على +4 نقاط



شكرا لك
هذا بعد التعديل
(19-12-16, 11:22 AM)عبدالله الصافي كتب : [ -> ]هذا بعد التعديل


نعم الان ادق بشكل كبيرSmile


الاخ عبدالله الصافي حصل على +2 نقاط

شكرا لك
انتهت الجولة الاولى



وترتيب المتسابقين هو :

8 نقاط لـ Fantastico
6 نقاط لـ noway
4 نقاط لـ samira20
2 نقاط لـ عبدالله الصافي







تنفيذ الخوارزمية


هناك بالطبع عدة طرق لتنفيذ الخوارزمية ، وان لم اكن اعرف غير هذه الطريقة والتي اعتبرها اقصر طريق لإيجاد المطلوب

الطريقة هي باستعمال Tan Inverse ، فكما نعلم ان مقلوب الTan يرجع لنا الزاوية بين نقطتين على نفس الخط ، وهي دالة من اهم الدوال في عالم البرمجة فتستعمل كثيرا جدا في عالم برمجة الGraphics او الالعاب (مثل العاب القذائف والكرة) .


فنقوم بإيجاد الزوايا لكل نقطة على حدا :

نقطة A :



نقطة B :



^^ هنا ظهرت الكارثة  Big Grin
لايمكننا ايجاد زاوية النقطة B  Huh  لان نعلم رياضيا انه لا يمكن قسمة عدد على صفر .



اذن مالحال ؟

لهذه المصيبة ، ابتكر المطورون دالة بديلة باسم Math.Atan2 وهي دالة موجودة في جميع لغات البرمجة وفي كثير من الاحيان تستخدم بدل Math.Atan   التقليدية وذلك بسبب المشكلة المذكورة مسبقا ، وatan2 أخذ 2 بارميتار هما y و x وذلك لتقوم هي بالتكفل في موضوع قسمة العددين وان كان المجاور صفر ، فلا يوجد لديها مشكلة  Cool


ولكن atan2 على عكس atan التقليدية ، تقوم بجلب الزاوية دائما من الربع الايمن للدائرة  ، كما هو موضح :







اذن نقوم بجلب الزاوية الخاصة بالنقطة A ثم نقوم بجلب الزاوية للنقطة B ثم نوجد الفرق ، وبتأكيد تعرفون جميعا ان ايجاد الفرق يعني انقاص احد العددين من الاخر ، فننقص B من A وبالتالي تظهر لنا الزاوية بين النقطتين A و B Smile

والناتج التي ترجعه الدالة Math.Atan2 تكون بالـ Radian بين 180 و -180


وقبل ان تعوض في المعادلة الشهيرة لإيجاد طول القوس : S = r θ
يجب عليك التخلص من السالب التي ترجعه تلك الدالة ولكن يفضل تحويل الـ Radian الى Degree ثم التخلص من السالب فذلك اسهل ..


وبالتالي الكود النهائي :-




تحميل المشروع : https://drive.google.com/open?id=0B7P09J...zByWm9VOU0

تم
جزاكم الله خيرا
كيف ارسل السورس الى المشرف ؟
(20-12-16, 06:58 AM)samira20 كتب : [ -> ]جزاكم الله خيرا
كيف ارسل السورس الى المشرف ؟


ادخل على هذا الرابط أكتب لـ abulayth رسالة خاصة .

اكتبي العنوان والرسالة -يجب ان تحتوي على رابط السورس- ثم (ارسال) Smile
السلام عليكم ورحمة الله وبركاته

الف الف مبروك للفائزين وحظا اوفر لمن لم يحالفهم الحظ في الجولات القادمة

اتمنى من جميع المشاركين الراغبين في اتمام المسابقة والذين توصلوا الى حلول صحيحة ارفاق هذه الحلول هنا لكي يتسنى لهم المشاركة في كامل المسابقة لان من شروط المسابقة ان يقوم المتسابق بحل 4 اسئلة او اكثر بشكل صحيح

اتمنى لكم التوفيق
الصفحات : 1 2 3 4 5