النتائج 1 إلى 7 من 7

الموضوع: اريد مساعدة في عمليه حسابيه بسيطة ومعقدة بنفس الوقت :) وينهم العباقرة ؟؟؟

  1. #1
    عضو فعال
    تاريخ التسجيل
    May 2006
    المشاركات
    1,178

    Cool اريد مساعدة في عمليه حسابيه بسيطة ومعقدة بنفس الوقت :) وينهم العباقرة ؟؟؟



    السلام عليكم اخواني

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

    01:00:37,070
    +
    00:02:00,000
    =
    01:02:37:070


    عمليه اخرى لتنقل الارقم

    12:00:37,070
    +
    03:02:55,500
    =
    15:03:32:570

    غريب الامر , انا اريد كل خانة تجمع مع الخانة المماثلة + انها مثل الساعة اي رقم يوصل لاكثر من 60 يذهب للخانة اليسار باستثناء الخانة الاولى المكونة من 3 خانات وهي لتصل الى 999 ثم تقوم بحاسب 1 بالخانة اللي بجانبها والخانة الاخيرة ما يهم لانها لن توصل لاكثر من 60 في كل الحالات وللعلم هذا توقيت خاص ولا يمكن التعديل على شكل الخانات

    وينهم عباقرة الرياضة والبرمجة





    __________________
    مبادرة حدث متصفحك - شاركوا بها في مواقعكم
    You have to know, If you pay peanuts you get monkeys


  2. #2
    عضو نشيط
    تاريخ التسجيل
    Oct 2008
    المشاركات
    283


    اخي الحبيب إذا كنت قد وصفت الشخص الذي سيحل هذه المسألة بالعبقري فإن هذا الشخص هو أنت - صفقه لك :app:.
    لأنك ببساطة حلتها رياضياً - See..
    كل خانة تجمع مع الخانة المماثلة + انها مثل الساعة اي رقم يوصل لاكثر من 60 يذهب للخانة اليسار باستثناء الخانة الاولى المكونة من 3 خانات وهي لتصل الى 999 ثم تقوم بحاسب 1 بالخانة اللي بجانبها والخانة الاخيرة ما يهم لانها لن توصل لاكثر من 60 في كل الحالات وللعلم هذا توقيت خاص ولا يمكن التعديل على شكل الخانات
    أما برمجياً .. حضرتك برمجتها - ولكن برمجة بلغة البشرية.
    مادام لديك السيناريو فهو بحد ذاته برمجة - إذن لم يتبقى الا كتابة الكود بلغة PHP.

    على العموم .. منذ فترة كتبت دالة تحول صيغة الزمن أو فترة زمنية الى :
    كود:
    date(ymdHis)
    يعني الزمن ثواني.دقائق.ساعات.أيام.شهور.سنوات
    24ساعة = 1 يوم 00 ساعة و 00 دقيقة و 00 ثانية => ( 1000000 )

    دالة x2time :
    كود PHP:
    <?php
    /******************************************************************************************************/
    /*                                      x2time() Function                                            */ 
    /* دالة x2time : تقوم بإعادة صيغة الزمن المحدد الى صيغة date(ymdHis)                                   */
    /* Example : x2time(32.5, 'D') This means 32.5 day || Result : 102120000                           */
    /* See 1 12 00 00 / 1 This is 1 month and 12 means 12 day (.5 day) , 00 minutes and 00 seconds .  */
    /* Edited by Mostafa Maher .                                                  */ 
    /************************************************************************************************/ 
    function x2time($time$type) {
        function 
    xtime($time$type) {
            if (
    $type == 'Sec') {
                return 
    floor($time);
            }elseif (
    $type == 'Min') {
                
    $dottime recon_type(floor(($time floor($time)) * 60), 'Sec');            
                return (
    floor($time) * 100) + xtime($dottime['time'], $dottime['type']);
            }elseif (
    $type == 'H') {
                
    $dottime recon_type(floor(($time floor($time)) * 60 60), 'Sec');            
                return (
    floor($time) * 10000) + xtime($dottime['time'], $dottime['type']);
            }elseif (
    $type == 'D') {
                
    $dottime recon_type(floor(($time floor($time)) * 60 60 24), 'Sec');
                return (
    floor($time) * 1000000) + xtime($dottime['time'], $dottime['type']);
            }elseif (
    $type == 'M') {
                
    $dottime recon_type(floor(($time floor($time)) * 60 60 24 30), 'Sec');            
                return (
    floor($time) * 100000000) + xtime($dottime['time'], $dottime['type']);    
            }elseif (
    $type == 'Y') {
                
    $dottime recon_type(floor(($time floor($time)) * 60 60 24 30 12), 'Sec');            
                return (
    floor($time) * 10000000000) + xtime($dottime['time'], $dottime['type']);
            }
        }
        
            function 
    recon_type($time$type) {    
                switch (
    $type) {
                case 
    'Sec':
                    if (
    $time 60) {
                        return array(
    'time' => $timetype => 'Sec');
                    }elseif (
    $time >= 60 && (60 60) > $time) {
                        return array(
    'time' => ($time 60), type => 'Min');
                    }elseif (
    $time >= (60 60) && (60 60 24) > $time) {
                        return array (
    'time' => ($time / (60 60)), type => 'H');
                    }elseif (
    $time >= (60 60 24) && (60 60 24 30) > $time) {
                        return array (
    'time' => ($time / (60 60 24)), type => 'D');    
                    }elseif (
    $time >= (60 60 24 30) && (60 60 24 30 12) > $time) {
                        return array (
    'time' => ($time / (60 60 24 30)), type => 'M');
                    }elseif ((
    60 60 24 30 12)  <= $time) {
                        return array (
    'time' => ($time / (60 60 24 30 12)), type => 'Y');                    
                    }
                    break;
                case 
    'Min':
                    if (
    $time 60) {
                        return array(
    'time' => $timetype => 'Min');
                    }elseif (
    $time >= 60 && (60 24) > $time) {
                        return array(
    'time' => ($time 60), type => 'H');
                    }elseif (
    $time >= (60 24) && (60 24 30) > $time) {
                        return array (
    'time' => ($time / (60 24)), type => 'D');
                    }elseif (
    $time >= (60 24 30) && (60 24 30 12) > $time) {
                        return array (
    'time' => ($time / (60 24 30)), type => 'M');    
                    }elseif ((
    60 24 30 12) <= $time) {
                        return array (
    'time' => ($time / (60 24 30 12)), type => 'Y');                    
                    }
                    break;
                case 
    'H':
                    if (
    $time 24) {
                        return array(
    'time' => $timetype => 'H');
                    }elseif (
    $time >= 24 && (24 30) > $time) {
                        return array (
    'time' => ($time 24), type => 'D');    
                    }elseif (
    $time >= (24 30) && (24 30 12) > $time) {
                        return array (
    'time' => ($time / (24 30)), type => 'M');    
                    }elseif ((
    24 30 12)  <= $time) {
                        return array (
    'time' => ($time / (24 30 12)), type => 'Y');                    
                    }
                    break;                
                case 
    'D':
                    if (
    $time 30) {
                        return array(
    'time' => $timetype => 'D');
                    }elseif (
    $time >= 30 && (30 12) > $time) {
                        return array (
    'time' => ($time 30), type => 'M');    
                    }elseif ((
    30 12)  <= $time) {
                        return array (
    'time' => ($time / (30 12)), type => 'Y');                    
                    }
                    break;
                case 
    'M':
                    if (
    $time 12) {
                        return array(
    'time' => $timetype => 'M');
                    }elseif ( 
    12 <= $time) {
                        return array (
    'time' => ($time 12), type => 'Y');                    
                    }
                    break;
                case 
    'Y':
                    return array(
    'time' => $timetype => 'Y');
                }
            }
        
    $ytime recon_type($time$type);
        return 
    xtime($ytime['time'], $ytime['type']);
    }

    // إختبار الدالة
    //echo x2time(32.25, 'D');
    ?>
    إذا أردت تحويل 78032 دقيقة الى الصيغة ymdHis ستستدعى الدالة كالتالي :
    كود PHP:
    x2time(78032'Min'); 
    حيث Sec ثانية و Min دقيقة و H ساعة و D يوم و M شهر و Y سنة .

    على الفكرة الدالة ليست دقيقة 100% .
    32 يوم - يعني 00 00 00 02 1 - لكن الدالة ستعطيك 58 59 23 01 1 ( فرق 2ثانية)

    أنا عارف ان الدالة دي - مش هي اللي أنت عايزها .
    لكن - See
    01:00:37,070
    +
    00:02:00,000
    =
    01:02:37:070
    لو
    01:00:37,070 ترجع لصيغة واحدة ( أيام ) x.xx
    +
    00:02:00,000 ترجع لصيغة واحدة ( أيام y.yy )
    =
    كود PHP:
    x2time(x.xx y.yy'D'); 
    -------------------------------------------

    ممكن تكون هناك طريقة اسهل بكثير - لكن انا تركيزي دلوقتي 0 - :con2:
    بالتوفيق ،،،





    __________________
    اللهم وفقني لما تحبه وترضاه...

  3. #3
    عضو نشيط
    تاريخ التسجيل
    Jun 2003
    المشاركات
    291


    لازم اكتب لك البرنامج حتى تزيد ثقتي بنفسي واعتقد اني عبقري!!
    كود PHP:
    <?php

    //these got our two numbers
    $n1='01:00:07,000';
    $n2='01:00:00,000';


    // ok, we gonna need to split each of those into 4 parts.
    // gonna make an array for the fun of it

    $a1 split('[:,]'$n1);
    $a2 split('[:,]'$n2);


    // ok just a reminder, array has, hour, minute, sec, milisec
    // going to store the result in $r

    //yeah not gonna comment that, gonna take too long to explain
    $r[3] = ($a1[3]+$a2[3])%1000;
    $r[2] = (($a1[2]+$a2[2])%60) + ((($a1[3]+$a2[3])>999)?1:0);
    $r[1] = (($a1[1]+$a2[1])%60) + ((($a1[2]+$a2[2])>59)?1:0);
    $r[0] = ((($a1[0]+$a2[0])%60) + ((($a1[1]+$a2[1])>59)?1:0))%60;


    //stupid formatting
    if($r[0]<10$r[0] = '0'.$r[0];
    if(
    $r[1]<10$r[1] = '0'.$r[1];
    if(
    $r[2]<10$r[2] = '0'.$r[2];
    if(
    $r[3]<10$r[3] = '00'.$r[3];
    else if(
    $r[3]<100$r[3] = '0'.$r[3];


    //results!
    echo $r[0].':'.$r[1].':'.$r[2].','.$r[3];

    ?>







  4. #4


    بعداً عن تعقيد الرموز :

    أعتقد ستحتاج لعمل دالة تحول أي رقم تدخله لرقم بدون أي رموز ( مثل تحويل الزمن ليونكس تيم )
    ومن ثم الطرح بشكل سلس وسهل
    ثم العودة في الدالة بشكل عكسي لكتابتها بطريقتك





    __________________
    السيف أصدق أنباء من الكتب

  5. #5
    عضو نشيط
    تاريخ التسجيل
    Jun 2003
    المشاركات
    291


    بعداً عن تعقيد الرموز :

    أعتقد ستحتاج لعمل دالة تحول أي رقم تدخله لرقم بدون أي رموز ( مثل تحويل الزمن ليونكس تيم )
    ومن ثم الطرح بشكل سلس وسهل
    ثم العودة في الدالة بشكل عكسي لكتابتها بطريقتك
    اذا تتكلم عن Unix timestamp يعني تحويل الزمن الى اجزاء الثانية في مثالنا.. اعتقد من الواضح ان هذي عمليات مبالغ فيها... و انك لم تقرأ الكود اللي انا كتبته.






  6. #6


    أخي [Dynamic]
    لم تفهم مشاركتي
    انا لم أقرأ كودك أخي ولو كان يعمل فجزيل الشكر لك
    ولكن كان حديثي لكاتب الموضوع ان هذه الأرقام بالطبع لها حد أعلي
    فلو كان ذلك فيمكنه تحويل تلك الأرقام لشيئ أستاندرد بحيث يكون رقم واحد بدون رموز بنفس فكرة اليونكس تايم في تحويل الزمن لثواني

    وعموما جزيل الشكر مرة أخري أخي





    __________________
    السيف أصدق أنباء من الكتب

  7. #7
    عضو نشيط
    تاريخ التسجيل
    Aug 2005
    المشاركات
    188


    ببساطة ابدأ بتحويل عكسي

    فبالنسبة لمثالك :
    ####################
    01:00:37,070
    +
    00:02:00,000
    =
    01:02:37:070
    ####################

    أصغر وحدة هي الجزء من الثانية ، اذن يجب تحويل الوقت بالكامل الى اجزاء من الثانية
    فتقوم بتحويل الساعة الى دقائق بضرب العدد في 60 ((ثم تجمع العدد الناتج المحول من الساعات مع عدد الدقائق الموجودة مسبقا)) ثم تحول ناتج الدقائق الى ثواني ، ثم تحول الثواني الى اجزاء من الثانية

    فمثلا :
    01:00:37,070
    الوقت هو = ساعة واحده ، وصفر دقيقة ، و 37 ثانية ، و 70 جزء من الالف من الثانية

    نبدأ بالتحويل العكسي :
    ساعة واحدة = 60 دقيقة
    صفر دقيقة +60 دقيقة من العملية السابقة = 3600 ثانية
    37 ثانية + 3600 = 3637000 (نضرب الثواني في 1000)
    70 + 3637000 = 3637070

    اذن الوقت السابق يساوي 3637070 جزء من الالف من الثانية (((هذا بالنسبة للرقم الاول )))

    بالنسبة للرقم التالي نطبق عليه نفس الطريقة بيكون الناتج 120000 جزء من الالف من الثانية

    نجمعهم بشكل طبيعي
    3637070 + 120000 = 3757070 جزء من الالف من الثانية

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


    ملاحظة : الطريقة السابقة ايضا تستخدم لتحول الاسبوع الى ايام الى ساعات .... الخ





    __________________
    www.DNStatus.com





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض