• 0
أحمد أبو عبد البر

نتيجة السؤال الثامن من مسابقة الفريق العربي لبرمجة 8

سؤال

سلام عليكم

 

كان السؤال الثامن هو

 

 

 

 

طُلِب من صانع كرات أن يصنع كرة من الجلد ، وأعطي جلدا مساحته

4195065484 مم²

وسمكه مم

وكرية صغيرة نصف قطرها 10 مم

 

طريقة صنع الكرة هي أن يلف الكرية الصغيرة بالجلد على شكل طبقات مثل البصلة

 

يريدنا هذا الصانع أن نعرف ما هو نصف قطر الكرة الذي سيصنعها بهذا الجلد وكم سيبقى له

 

أرسل المطلوب على الشكل التالي

 500/1254174

حيث 500 هي نصف قطر الكرة بالميليمتر

و1254174 هو مساحة الجلد المتبقي بالميليمتر المربع

 

يجب تدوير مساحة الجلد المتبقي إلى عدد صحيح

فإن كان مثلا 1254173,989 فإن الناتج يكون 1254174

 

نأخذ

pi=3.14159

 

 

والجواب هو 999/12564741

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

11 إجابة على هذا السؤال .

  • 0
<?php$x=10;$pi=3.14159;$gld=4195065484;//4182500743.0114$output=10;for ($i=1;$i<=10000;$i++){$y=$x+$i;$size=4*($pi*pow($y,2));if ($size<=$gld){$gld=$gld-$size;/*print "layer #$i was made of $size mm and $gld remaining"; print "\n";*/}else{$remaining=round($gld);$output=$output+$i-1;//print orders commented out for less output/*print "layer#$i exceeds limits";print "\n";print $output;print "\n";print $gld;print "\n";*/die("$output/$remaining");}}?>

المشكلة في هذا السؤال هي تحديد قطر الطبقة الاولى - هل يساوي( قطر الكرة المعطاة) أم( قطر الكرة المعطاة +سمك الطبقة الاولى )

اذا افترضنا الاحتمال الثاني فالاجابة صحيحة كما بالكود اعلاه

أما اذا افترضنا الاحتمال الاول - و هو الاقرب للمعقول-  فالاجابة الصحيحة هي تغيير الرقم 1 في السطر الخامس الى صفر كما اجبت في المحاولة الاولى

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 هذا حلّي:

#include <iostream>#include <iomanip>using namespace std;double A, r;const double pi=3.14159;double AreaCalc(double r);int main(){    A=4195065484.0;    r=11.0;    double final_r = AreaCalc(r);    cout<<final_r<<"\t"<<setprecision(10)<<A<<"\t"<<endl;    return 0;}double AreaCalc(double r){    double current_A;    current_A=4*pi*r*r;    if (A-current_A>=0.0){        A=A-current_A;       return AreaCalc(r+1);    }    else return r-1;}
أما اذا افترضنا الاحتمال الاول - و هو الاقرب للمعقول-

 

 

كنت في البداية وقعت في الخلط في هذه النقطة، بعدها إنتهيت إلى ما يخالف ما هو الأقرب للمعقول عندك :)

يجب إضافة سمك الجلد منذ الطبقة الأولى، تخيل لو كان سمك  الجلد كبيرا جدا، فلا بد أن يكوّن كرة مساحتها A=4 pir2، كلما زاد حجم الكرة زادت مساحتها الخارجية بفعل زيادة نصف قطرها r كما في المعادلة ..

نلاحظ أن المساحة تعتمد فقط على نصف القطر، وقطر الكرة دائما يُحسب من نقطة المركز وصولا بالخط الإفتراضي الذي يحد شكل الكرة الخارجي.

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يجب إضافة سمك الجلد منذ الطبقة الأولى، تخيل لو كان سمك  الجلد كبيرا جدا، فلا بد أن يكوّن كرة مساحتها A=4 pir2، كلما زاد حجم الكرة زادت مساحتها الخارجية بفعل زيادة نصف قطرها r كما في المعادلة ..

نلاحظ أن المساحة تعتمد فقط على نصف القطر، وقطر الكرة دائما يُحسب من نقطة المركز وصولا بالخط الإفتراضي الذي يحد شكل الكرة الخارجي.

 

المساحة التي نريد حسابها هي مساحة الجلد و ليس مساحة سطح الكرة التي يكونها الجلد

المساحة الكافية لتغطية الكرة الاولية - المعطاة تعتمد على نصف قطر هذه الكرة و ليس سمك المادة التي يتم تغطيتها بها

 

لنفرض مثلا ان لدينا كرة نصف قطرها10 سم و نريد تغطيتها بمادة سمكها 20سم فكم مساحة المادة المستخدمة ؟

بالتاكيد ستكون 4 ط *10 ^2 و ليس 4ط *30 ^2

يمكنك حتى ان تجربها باستخدام كرة صغيرة و قطعة من القماش

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هذا هو الكود الذي كتبته بلغة C#

using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication3{    class Program    {        static double SurfaceSphere(int r)        {            double pi = 3.14159;            return (4 * pi * r * r);        }        static void Main(string[] args)        {            double surface = 4195065484.0;            int rayon = 10;            while (SurfaceSphere(rayon) < surface)            {                surface = surface - SurfaceSphere(rayon);                rayon = rayon + 1;            }            Console.Write("Rayon is : ");            Console.Write(rayon);            Console.WriteLine(" mm2");            Console.Write("Rest is : ");            Console.Write((int)surface);            Console.WriteLine("mm2");            // Exit Part            Console.ReadKey();        }    }}

النتيجة التي خرجها هي 1000/12563484

بالطبع هي خاطئة بالنسبة لاجابة أستاذنا المشرف ، لكن أنا أريد أن أكتشف أين خطئي

فلو يتفضل أحد من حضاراتكم ، مشتركا معي أو مشرف على المسابقة

لأنه لدي نفس الاستفسار للأخ العمدة11 ، لأننا بالمرة الأولى نحسب مساحة الكرة بقطر 10 ملم وليس 10+1 (سمك الجلد) لأن السطح الداخلي للجلد هو الذي سيلامس الكرية

 

ملاحظة : المساحة المتبقية التي خرجت لي ، الفرق بينها وبين اجابة الأستاذ أبو عبد البر هي 1257 وهي بالتقريب مساحة تغطة 1 ملم نصف القطر الزائد فقط

 

اللهم انفعنا بما علمتنا وعلمنا ما ينفعنا وزدنا علما

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

 

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

- بمعنى عند إقتطاع جذء من الجلد لتغطية الكرة يكون سطح المساحة المقطوعة من أسفل وأعلى متساوية , إذاً هناك فاقد من الجلد عند تغطية شكل كروي يتم حساب هذا الفاقد على النحو التالي :

v = 4 * pi * (r+h)^2 * hv1 = 4/3 * pi * r^3v2 = 4/3 * pi * (r+h)^3v3 = v2-v1v4 = v-v3

h هو سمك الجلد

v حجم الجلد المقطوع بمساحة سطح الكرة الخارجي بعد التغليف بدون فاقد .

v1 حجم الكرة قبل التغليف .

v2 حجم الكرة بعد التغليف .

v3 حجم غلاف الجلد فقط .

v4 فاقد الجلد الغير مستخدم .

 

من هذا يتضح أن مساحة الجلد التي ستم إقتطاعها لتغطية الكرة هي مساحة سطح الكرة بعد التغليف .

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كنت قد كتبت الكود التالي :

from math import *pi, area, n = 3.14159, 4195065484, 10while True:    if area < 4*pi*n**2:        break    area = area-(4*pi*n**2)    n += 1print(str(n)+'/'+str(round(area, 0)))

وكان الناتج هو 1000/12563484 فتناقشت في هذا مع الزميل أحمد أبوعبد البر بخصوص هذا الناتج والناتج المخزن على الموقع وتبين لي خطأي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
لنفرض مثلا ان لدينا كرة نصف قطرها10 سم و نريد تغطيتها بمادة سمكها 20سم فكم مساحة المادة المستخدمة ؟

بالتاكيد ستكون 4 ط *10 ^2 و ليس 4ط *30 ^2

 

لا يا أخي،

4 ط *10 ^2

ناتج  هذه العملية هو مساحة كرة نصف قطرها 10.

أو مساحة الجلد الذي سمكه يساوي قريبا من الصفر ويغطي كرة ذات نصف قطر يساوي 10

عدم إضافة سمك الجلد على نصف قطر الكرة الأولية ثم حساب المساحة الخارجية بالقانون المعروف، يعني سلفا أنك تفترض سمكاً يساوي صفرا للجلد.

عند إضافة الجلد على الكرة لأول مرة يعني ذلك أننا إستخدمنا مساحة من الجلد (أتكلم عن مساحة "خارجية" للجلد وليس حجمه) تساوي مساحة الكرة الجديدة التي أمامنا، وتذكر أن قطر الكرة دائما يُحسب من نقطة المركز وصولا بالخط الإفتراضي الذي يحد شكل الكرة الخارجي.

الموضوع لا أراه يحتمل النقاش فالفكرة قطعية في تصوري.

تم تعديل بواسطه A.S Hack
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

سلام عليكم

 

لا بد أن نشرح الخوارزمية على الواقع ثم نترجم ذلك إلى كود

 

نغلف الكرية المرة الأولى

ماذا سينتج ؟ كرية نصف قطرها 11 مم

كم اقتطعنا من مساحة الجلد ؟ اقتطعنا 11*11*pi*4

 

 

 

 

سنعتبر هذه هي الحلقة الأولى للدوران  وبالتأكيد كما هو ظاهر فإن نصف القطر الذي نبدأ به الدوران هو 11 وليس 10

 

السؤال الجدلي هنا هل نحسب المساحة الخارجية للجلد أم الداخلية

الجواب الخارجية

 

لماذا ؟

 

لأن السطح الداخلي سيتقلص بعضه إلى بعض وبالتالي فستنقص مساحته 

الأجسام المرنة إذا طويت فإن السطح الداخلي منها يدخل بعضه في بعض وينقص من مساحته بقدر زاوية الطي

أرجو أن قد وضح المقصود

تم تعديل بواسطه أحمد أبو عبد البر
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الحمد لله وضحت الفكرة

شكرا لكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

v = 4 * pi * (r+h)^2 * hv1 = 4/3 * pi * r^3v2 = 4/3 * pi * (r+h)^3v3 = v2-v1v4 = v-v3

من هذا يتضح أن مساحة الجلد التي ستم إقتطاعها لتغطية الكرة هي مساحة سطح الكرة بعد التغليف .

لم افهم كيف تثبت هذه المعادلة ان المساحة التي يتم اقتطاعها هي مساحة الكرة بعد التغليف

على اي اساس تم حساب v - المعادلة الاولى

حجم الجلد يساوي v3 و هو الفرق بين الحجم الداخلي و الخارجي للكرة

في معادلتك تم حساب حجم الجلد على انه حجم الجلد الكافي لتغطية سطح الكرة الخارجي للكرة الناتجة رغم انه من الممكن ان يكون r فقط و ليس r + h اذا افترضنا انه سيتم حساب حجم الجلد على اساس المساحة الداخلية للكرة

من المفترض ان يكون v  مساويا ل v3 بمعنى أن الفرق بين حجم الكرة الداخلية و حجم الكرة الخارجية هو نفسه حجم الجلد بينهما

لكن هذا لا يتحقق في هذه المعادلة - حتى لو حسبناه على حجم الكرة الداخلي

و هذا يعني ان هناك فاقد بالفعل لكن قيمته غير محددة 

 

 

 

سلام عليكم

 

لا بد أن نشرح الخوارزمية على الواقع ثم نترجم ذلك إلى كود

 

نغلف الكرية المرة الأولى

ماذا سينتج ؟ كرية نصف قطرها 11 مم

كم اقتطعنا من مساحة الجلد ؟ اقتطعنا 11*11*pi*4

 

 

 

 

سنعتبر هذه هي الحلقة الأولى للدوران  وبالتأكيد كما هو ظاهر فإن نصف القطر الذي نبدأ به الدوران هو 11 وليس 10

 

السؤال الجدلي هنا هل نحسب المساحة الخارجية للجلد أم الداخلية

الجواب الخارجية

 

لماذا ؟

 

لأن السطح الداخلي سيتقلص بعضه إلى بعض وبالتالي فستنقص مساحته 

الأجسام المرنة إذا طويت فإن السطح الداخلي منها يدخل بعضه في بعض وينقص من مساحته بقدر زاوية الطي

أرجو أن قد وضح المقصود

ربما يكون صحيحا ان هناك فاقد - لكنه ليس بالضرورة انه يساوي حجم الجلد في الدورة الاولى

لكن كيف يتم حساب هذا الفاقد؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

 

لم افهم كيف تثبت هذه المعادلة ان المساحة التي يتم اقتطاعها هي مساحة الكرة بعد التغليف

على اي اساس تم حساب v - المعادلة الاولى

حجم الجلد يساوي v3 و هو الفرق بين الحجم الداخلي و الخارجي للكرة

في معادلتك تم حساب حجم الجلد على انه حجم الجلد الكافي لتغطية سطح الكرة الخارجي للكرة الناتجة رغم انه من الممكن ان يكون r فقط و ليس r + h اذا افترضنا انه سيتم حساب حجم الجلد على اساس المساحة الداخلية للكرة

من المفترض ان يكون v  مساويا ل v3 بمعنى أن الفرق بين حجم الكرة الداخلية و حجم الكرة الخارجية هو نفسه حجم الجلد بينهما

لكن هذا لا يتحقق في هذه المعادلة - حتى لو حسبناه على حجم الكرة الداخلي

و هذا يعني ان هناك فاقد بالفعل لكن قيمته غير محددة

- يمكن لنا حساب مساحة الجلد بالنسبة لنصف القطر قبل التغليف في حالة أن سمك الجلد صفر وهذا غير محقق , إذاً يجب إحتساب مساحة الجلد المقتطعة بعد إضافة سمك الجلد لنصف القطر .

- v في المعادلة الأولى هو حجم الجلد بدون فاقد حيث أن رقعة الجلد تكون مستطيلة الشكل أي حجمها هو :

v = (x * y) * h

- وتم التعويض عن الطول y في العرض x بمساحة سطح الكرة التي تعني مساحة الجلد المقطوع مضروباً في الإرتفاع لحساب الحجم كالتالي :

v = (4 * pi * (r+h)^2) * h

وهذا يعني أن V أكبر من V3 وبالطرح نحصل على الفاقد .

 

وأعتذر إن كان هناك أي شئ غير واضح في ردي في الأعلى , وفي الغالب لن أستطيع المشاركة في الأيام المقبلة لسفري غداً فأعذرني على عدم متابعة المناقشة .

 

دمتم في رعاية الله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .