إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

هل هناك طريقة للتحويل بين نظم الاعداد ؟

تقليص
هذا الموضوع مغلق.
X
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • هل هناك طريقة للتحويل بين نظم الاعداد ؟

    السلام عليكم ورحمة الله وبركاته

    هل هناك طريقة لتحويل الأعداد للأنظمة غير الشائعة
    مثلا للثلاثى او الخماسى او الثلاثينى .... الخ ؟
    و شكرا

  • #2
    لا أعلم أو لم أهتم قبل ذلك بالمعرفة ...... معذرة لى

    ولكن متابع لمحاولة المعرفة معكم والإستفادة مما يدور فى هذا الموضوع

    تعليق


    • #3
      القسمة على 5 دائما و الاحتفاظ بالباقي .. البواقي كما تعرف ستعطينا الكتابة للعدد في النظام الخماسي
      القسمة على 3 دائما و الاحتفاظ بالباقي .. البواقي كما تعرف ستعطينا الكتابة للعدد في النظام الثلاثي
      القسمة على 30 دائما و الاحتفاظ بالباقي .. البواقي كما تعرف ستعطينا الكتابة للعدد في النظام الثلاثيتي إن صح التعبير
      ------------
      صديقي الاحتفاظ بالبواقي بالمقلوب كما تعرف و القسمة طبعا بدون المرور إلى الأجزاء العشرية أي ليست تامة

      اعذرني أخي في الوقت الراهن ظروفي ضدي لا أملك 10 دقائق أجلس فيها في البيت .. تستاهل أن الفرد يجيبك سواء كان طلبا أو تمرينا لكنها ظروف فرضت عني التفاعل مع
      موضوعك على الأقل بكلمات حتى أجد فرصة لأشارك بما يفيد موفق مشكور على السؤال الجيد

      مثال :
      للتحويل إلى الثلاثي
      كود PHP:
       p String.ToNumber(Input.GetText("Input1"));  
      =""
      x=1
      repeat
      p
      ,=Math.Floor(p/3),Math.Mod(p,3
      x=x+1;g=g..n;
      until p <=0
      Dialog
      .Message("Notice"string.reverse (g)); 
      وشوف اذ صح قيس عليها

      تعليق


      • #4
        المشاركة الأصلية بواسطة ثامر أبو بلقيس مشاهدة المشاركة
        في النظام الثلاثيتي إن صح التعبير
        نعم يصح جدا هذا التعبير
        كون التعبير غير شائع لا يجعله غير صحيح

        المشاركة الأصلية بواسطة ثامر أبو بلقيس مشاهدة المشاركة
        اعذرني أخي في الوقت الراهن ظروفي ضدي لا أملك 10 دقائق أجلس فيها في البيت .. تستاهل أن الفرد يجيبك سواء كان طلبا أو تمرينا لكنها ظروف فرضت عني التفاعل مع
        موضوعك على الأقل بكلمات حتى أجد فرصة لأشارك بما يفيد موفق مشكور على السؤال الجيد
        شكرا اخى الكريم على تخصيص الوقت وفقك الله
        هذا شيئ محل تقديرى و اعزازى و متوقع منكم

        المشاركة الأصلية بواسطة ثامر أبو بلقيس مشاهدة المشاركة
        مثال :
        للتحويل إلى الثلاثي
        كود PHP:
         p String.ToNumber(Input.GetText("Input1"));  
        =""
        x=1
        repeat
        p
        ,=Math.Floor(p/3),Math.Mod(p,3
        x=x+1;g=g..n;
        until p <=0
        Dialog
        .Message("Notice"string.reverse (g)); 
        وشوف اذ صح قيس عليها
        صحيح 100%

        و هذا هو القياس عليها
        كود PHP:
        function Num_Sys(num,sys)
        String.ToNumber(num);  
        =""
        repeat
        p
        ,=Math.Floor(p/sys),Math.Mod(p,sys
        g=g..n;
        until p <=0
        return string.reverse (g)
        end

        result 
        Num_Sys(30,3)
        Dialog.Message("Notice"result); 
        كود PHP:
        function Num_Sys(num,sys
        حيث num هى الرقم المطلوب تحويله
        و sys هو النظام العددى المراد التحويل اليه
        كود PHP:
        result Num_Sys(30,6)
        Dialog.Message("Notice"result); 
        مثلا هذا الكود سيحسب قيمة 30 فى النظام السداسي

        الدالة فعالة جدا حتى النظام العشرى ( يمكن التعويض عن sys برقم من 2 إلى 10 )
        لأنه كما تعلم ان الأمور تتغير بعد العشرى الى استخدام الحروف الانجليزية

        مثلا 99999999999999 فى النظام العشري تعادل ZG3D62R5R فى النظام السادس و الثلاثينى

        استمتعت جدا بمداخلتك القوية و اكوادك الواضحة
        لكن
        للحديث بقية

        تعليق


        • #5
          الأنظمة العددية تبدأ من الثنائى و تنتهى بالنظام الرابع و الستينى (على حد علمى قد يكون هناك أكثر .. لا أعلم )
          من الثنائى و حتى العشرى لا يتم استخدام أحرف
          يستخدم فقط كل او بعض الاعداد من 0 حتى 9 [0123456789]

          من النظام 11 و حتى 36 يضاف إستخدام بعض او كل الأحرف الانجليزية (26 حرف) دون النظر لحالة الحرف سمول او كابتل فمثلا الرقم A أو a يساوى 10

          من النظام 37 و حتى 64 يتم التفرقة بين الأحرف الكبيرة و الصغيرة فنجد A تساوى 10 بينما a تساوى 36

          تعليق


          • #6
            نعم أخي الكريم في قراءة مثلا لأنظمة العد في النظام الثلاثيني
            قد تكون هاته المحاولة قريبة للصحة إن شاء الله لكنها تبقى محاولة لأن الموضوع يحتاج لدراسة أنظمة العد و فهمها أكثر من التنفيذ
            كود PHP:
            String.ToNumber(Input.GetText("Input1"));  
            my_table = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T"};
            ="";x=1
            repeat
            p
            ,=Math.Floor(p/30),Math.Mod(p,30)
            x=x+
            if >= 10 and 20 then
            x1 
            String.Mid(n11)+ String.Mid(n21)
            =my_table[x1]
            elseif 
            >= 20 then 
            x2 
            n-9
            =my_table[x2]
            end
            g
            =g..n
            until p 
            <=0
            Dialog
            .Message("Notice"string.reverse (g)); 

            تعليق


            • #7
              أعجبني هذا الحل الشامل كثيرا فنقلته لك :
              كود PHP:
              local floor,insert math.floortable.insert
              function basen(n,b)
                  
              floor(n)
                  if 
              not b or == 10 then return tostring(nend
                  local digits 
              "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
                  
              local t = {}
                  
              local sign ""
                  
              if 0 then
                      sign 
              "-"
                  
              = -n
                  end
                  repeat
                      local d 
              = (b) + 1
                      n 
              floor(b)
                      
              insert(t1digits:sub(d,d))
                  
              until n == 0
                  
              return sign .. table.concat(t,"")
              end
              ----------------------------------------

              Dialog.Message("Notice"basen("99999999999999",36)); 

              تعليق


              • #8
                شكرا اخى الكريم لنقل الكود الأخير فهو اكثر من ممتاز
                سأعتمده بعد حذف ما يخص الاشارة
                كود PHP:
                local floor,insert math.floortable.insert
                function basen(n,b)
                    
                floor(n)
                    if 
                not b or == 10 then return tostring(nend
                    local digits 
                "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
                    
                local t = {}
                        
                repeat
                        local d 
                = (b) + 1
                        n 
                floor(b)
                        
                insert(t1digits:sub(d,d))
                    
                until n == 0
                    
                return table.concat(t,"")
                end 
                حالما افرغ سأحاول التعديل للوصول للأنظمة من 37 حتى 64 بالتعديل على الكود السابق
                تقبل فائق تحياتى

                تعليق


                • #9
                  في نظام العد 37 للعدد " 99999999999999 " يعطي ناتج صحيح وهو SHEBQXIZP
                  في نظام العد 38 للعدد " 99999999999999 " يعطي ناتج صحيح وهو N009WHSCF
                  في نظام العد 39 للعدد " 99999999999999 " يعطي ناتج صحيح وهو IQR93ZEEL

                  ابتداء من نظام العد 40 يبدأ يعطي نتائج غير صحيحة موفق

                  تعليق


                  • #10
                    المشاركة الأصلية بواسطة ثامر أبو بلقيس مشاهدة المشاركة
                    في نظام العد 37 للعدد " 99999999999999 " يعطي ناتج صحيح وهو SHEBQXIZP
                    في نظام العد 38 للعدد " 99999999999999 " يعطي ناتج صحيح وهو N009WHSCF
                    في نظام العد 39 للعدد " 99999999999999 " يعطي ناتج صحيح وهو IQR93ZEEL

                    ابتداء من نظام العد 40 يبدأ يعطي نتائج غير صحيحة موفق
                    سبق التوضيح فى مشاركة 5
                    الحل أبسط مما تتصور
                    كود PHP:
                    function Num_Sys(num,sys)
                        
                    num math.floor(num)
                        if 
                    not sys or sys == 10 then return tostring(numend
                        local Numbers 
                    "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
                        
                    local t = {}
                           
                    repeat
                            local d 
                    = (num sys) + 1
                            num 
                    math.floor(num sys)
                            
                    table.insert(t1string.sub(Numbersdd))
                        
                    until num == 0
                        
                    return table.concat(t,"")
                    end 
                    هذا سيعمل بشكل صحيح من النظام الثنائى و حتى نظام 62 فقط
                    لاحظ
                    كود PHP:
                    "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" 
                    عدد المحارف = 10 أرقام + 26 كابتل +26 سمول = 62
                    يبقى محرفان اعتقد انهما / و +
                    لا احب التخمين
                    ساكتفى حتى ال 62 مؤقتا
                    موفق

                    تعليق


                    • #11
                      بارك الله فيك يظهر أن المشكل عندي و لا أعرف السبب
                      صورة
                      [imgl]http://e.top4top.net/p_271uwes1.png[/imgl]

                      لا أعرف لما الكود الأخير أعطى النتيجة الظاهرة أسفل و هي غير النتيجة التي تظهرها لغة برمجية أخرى
                      يبدو أن الأمر يتعلق مثلا يالجهاز ؟ أو اللغة ؟

                      ما سبب النتيجة
                      كود PHP:
                      CLJ6^2N1
                      هده و ما سبب الرموز الغريبة التي صارت تظهر بدء من نظام العد 40 فما فوق

                      تعليق


                      • #12
                        جرب
                        كود PHP:
                        function Num_Sys(num,sys)
                            
                        num math.floor(num)
                            if 
                        not sys or sys == 10 then return tostring(numend
                            local Numbers 
                        "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/"
                            
                        local t = {}
                               
                        repeat
                                local d 
                        = (num sys) + 1
                                num 
                        math.floor(num sys)
                                
                        table.insert(t1Numbers:sub(d,d))
                            
                        until num == 0
                            
                        return table.concat(t,"")
                        end 
                        يحتاج لضبط نتائج نظام 63 و 64 فقط

                        غير نوع خط الانبوت و اجعل سكربت الفونت انجلش
                        و يمكنك مراجعة هذا الموقع للتأكد من النتائج
                        http://convertxy.com/index.php/numberbases/
                        انتقى الأنظمة المطلوبة من يسار الصفحة فى الموقع
                        موفق

                        تعليق


                        • #13
                          المشاركة الأصلية بواسطة المـهاجر مشاهدة المشاركة
                          جرب
                          كود PHP:
                          function Num_Sys(num,sys)
                              
                          num math.floor(num)
                              if 
                          not sys or sys == 10 then return tostring(numend
                              local Numbers 
                          "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/"
                              
                          local t = {}
                                 
                          repeat
                                  local d 
                          = (num sys) + 1
                                  num 
                          math.floor(num sys)
                                  
                          table.insert(t1Numbers:sub(d,d))
                              
                          until num == 0
                              
                          return table.concat(t,"")
                          end 
                          يحتاج لضبط نتائج نظام 63 و 64 فقط

                          غير نوع خط الانبوت و اجعل سكربت الفونت انجلش
                          و يمكنك مراجعة هذا الموقع للتأكد من النتائج
                          http://convertxy.com/index.php/numberbases/
                          انتقى الأنظمة المطلوبة من يسار الصفحة فى الموقع
                          موفق
                          تم التأكد من دقة الأكواد كما تم رمي و الاستغناء على الأداة المستعملة في مقارنة النتائج من قبلي أحسنت

                          تعليق


                          • #14
                            يرفع

                            تعليق

                            مواضيع تهمك

                            تقليص

                            المنتدى: القسم العام نشرت بواسطة: Reem2Rabeh الوقت: 04-23-2025 الساعة 04:27 PM
                            المنتدى: ضبط وتوكيد الجودة نشرت بواسطة: HeaD Master الوقت: 04-15-2025 الساعة 09:30 AM
                            المنتدى: التصنيع والانتاج نشرت بواسطة: HeaD Master الوقت: 04-11-2025 الساعة 01:08 PM
                            المنتدى: القسم العام نشرت بواسطة: نوال الخطيب الوقت: 03-19-2025 الساعة 03:07 AM
                            المنتدى: الكمبيوتر والإنترنت نشرت بواسطة: عوض السوداني الوقت: 03-18-2025 الساعة 07:22 AM
                            يعمل...
                            X