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

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

بدأه أحمد أبو عبد البر في 1 نوفمبر 2013 · 11 رد · 2,103 مشاهدة · في المسابقات البرمجية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام عليكم

 

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

 

 

 

 

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

4195065484 مم²

وسمكه 1 مم

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

 

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

 

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

 

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

 500/1254174

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

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

 

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

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

 

نأخذ

pi=3.14159

 

 

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

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

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

#2
<?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 في السطر الخامس الى صفر كما اجبت في المحاولة الاولى

#3

 هذا حلّي:

#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

" إن الله كتب الإحسان على كل شيء"

::

الإرادة ... تحقق السيادة.

#4
A.S Hack كتب:

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

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

 

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

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

 

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

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

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

#5

هذا هو الكود الذي كتبته بلغة 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 ملم نصف القطر الزائد فقط

 

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

#6

السلام عليكم

 

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

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

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

h هو سمك الجلد

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

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

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

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

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

 

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

1

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#7

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

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

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

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

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

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

 

لا يا أخي،

4 ط *10 ^2

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

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

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

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

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

تم تعديل هذه المشاركة بواسطة A.S Hack في 3 نوفمبر 2013 في 01:02

2

" إن الله كتب الإحسان على كل شيء"

::

الإرادة ... تحقق السيادة.

#9

سلام عليكم

 

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

 

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

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

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

 

 

 

 

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

 

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

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

 

لماذا ؟

 

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

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

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

تم تعديل هذه المشاركة بواسطة أحمد أبو عبد البر في 3 نوفمبر 2013 في 14:07

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

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

#10

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

شكرا لكم

#11
ahmedsaoud31 كتب:

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

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

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

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

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

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

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

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

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

 

 

 

أحمد أبو عبد البر كتب:

سلام عليكم

 

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

 

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

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

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

 

 

 

 

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

 

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

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

 

لماذا ؟

 

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

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

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

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

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

#12

السلام عليكم

 

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

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

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

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

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

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

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

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

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

v = (x * y) * h

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

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

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

 

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

 

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

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

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