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

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

هــل يمكن تــــجزئة رقـــــم بالاعتمـــــاد على علامـــــة ؟

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

  • هــل يمكن تــــجزئة رقـــــم بالاعتمـــــاد على علامـــــة ؟

    بسم الله الرحمن الرحيم
    السلام عليكم ورحمة الله وبركاته
    أخواني الاعزاء اساتذتي الكرام
    هل يمكن تجزئة رقم الي جزئين بالاعتماد على علامة ( . ) بينت

    اقصد عندي Input1 يحتوي على 15.7 او 2.22 او 13.12 او 133.349 .........الخ
    طبع اقصد رقم من هذه الارقام وليس كلها
    وليكن مثلا 13.12
    هل يمكن تقسيم اوتجزئة الرقم بحيث يظهر
    في Input2 الرقم 13
    وفي Input3 الرقم 12
    أي قسمة الاعداد ما قبل علامة البينت (.) وما بعد علامة البينت (.)

    لقد وجدت اكواد تحذف رقم او رقمان كما تحدد انت من اليسار واليمين
    وهذة الاكواد كانت تنفع معي لو كانت عدد الخانات ثابتة قبل (.) وبعدها
    في مشروعي لكن للاسف متغيره
    وافضل شئ هو كود يقسملي الرقم الي رقمان ما قبل (.) وما بعدها

    اتمن ان اجد لديكم الحل

    شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

  • #2
    سؤال جيد أخي ياسر

    نظريا
    بافتراض لدينا العدد ص
    نحصل على العدد أو الجزء الصحيح من باستعمال الدالة : Math.Floor
    وليكن س
    يبقى لنا استخلاص الجزء العشري مباشرة سيكون هو حاصل طرح ص-س

    لكن هنا ستكون النتيجة معبرة عنها بــ صفر فاصل عدد من الارقام نريد ذلك العدد
    نحسب طول هذا الناتج و ننقص منه 2 المعبرين عن الصفر و الفاصلة سينتج معنا طول
    الارقام الي بعد الفاصلة أي الجزء العشري للجزء العشري نحوله بضرب ناتج س-ص في
    10 أو 100 أو 1000 الخ تلك الأصفار عرفنا عددها برمجيا نستعمل Math.Pow ليتم بناء الكود
    النهائي

    سأطبق ماذكر و أرسله لك إن شاء الله دقائق

    تعليق


    • #3
      [html]---- abou_belkiss -------------SEGMENTATION-------------------------------------------
      x = Input.GetText("Input1");
      Dialog.Message("Notice", Math.Floor(x));
      Dialog.Message("Notice", (x- Math.Floor(x))*Math.Pow(10,String.Length((x- Math.Floor(x)))-2));
      ------------------------------------------------------------------------------------------------
      [/html]


      نقرأ حلولا أخرى أجمل إن شاء الله
      أو التصحيح ‘ن بدى خطأ

      بالتوفيق

      تعليق


      • #4
        و هذه محاولة أخرى
        أجبرني التقريب الغريب في البرنامج لحل بطريقة أخرى
        على كل تبقى محاولات و السلام عليكم ورحمة الله
        [html] ---- abou_belkiss -------------SEGMENTATION-------------------------------------------
        x = Input.GetText("Input1");
        Dialog.Message("Notice", Math.Floor(x));
        Dialog.Message("Notice", String.Mid(x, String.Length(x)-(String.Length(x)- String.Length(Math.Floor(x))-2), String.Length(x)));
        [/html]

        تعليق


        • #5
          بسم الله الرحمن الرحيم
          السلام عليكم ورحمة الله وبركاته
          محاولات رائعة وممتازة اخي ابو بلقيس
          المحاولة الاولي كان الخطأ عند نهاية الرقم بصفر
          أي البرنامج كان يقرب 1.40 الي 1.4
          ---------
          ام المحاولة الثانية رائعة وصحيحه 100/100
          وحققت المطلوب واكثر
          انا لم افهم ماذا فعلت ولكن كأنك لغيت التعامل مع الرقم كرقم عشري

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

          تعليق


          • #6
            المشاركة الأصلية بواسطة ياسرهتهت مشاهدة المشاركة



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

            لوحة رائعة اخي ياسر// نعم هو اهلا لها الاخ ثامر
            ان شاء الله رمضان مبارك على الجميع
            موفق بإذن الله ... لك مني أجمل تحية .

            تعليق


            • #7
              بارك الله فيكما شكرا جزيلا نعم أخي ياسر في المحاولة الثانية لم أتعامل
              مع استخراج الجزء الصحيح و الجزء العشري -إن صح التعبير- بعد نزع الفاصلة و الصفر
              لانه لا يمكن تجاوز أي جزء عشري القيمة 1
              لكن رياضيا 3.2 = 3.20 = 3.200 الخ أي الأصفار لا قيمة لها هناا
              المشكل في عملية طرح عدد عشري من عدد صحيح فإن البرنامج يعطي النتيجة صحيحة اذ كان
              الجزء العشري المعبر عنه هو 0.5 أما مادونه 0.1 أو 0.2 أو 0.3 أو 0.4 إضافة لما أكبر منه
              أي 0.6 أو 0.7 او 0.8 أو 0.9 فإنه سيعطي أخطاء لهذا تخليت عن حل رياضي يمكن الرجوع إليه
              في حالة معرفة كم رتبة يمكن أن تكون للجزئين للعدد العشري ليتم استغلال الدالة : Math.Round المسؤولة
              عن التقريب
              السلام عليكم

              تعليق


              • #8
                المشاركة الأصلية بواسطة ياسرهتهت مشاهدة المشاركة

                وليكن مثلا 13.12
                هل يمكن تقسيم اوتجزئة الرقم بحيث يظهر
                في Input2 الرقم 13
                وفي Input3 الرقم 12
                أي قسمة الاعداد ما قبل علامة البينت (.) وما بعد علامة البينت (.)

                الحل مهما إختلف عدد المنازل
                كود PHP:
                num 13.12
                len 
                String.Length(num);

                mark String.Find(num"."1false);
                int =  String.Mid(num1mark-1);
                fract String.Mid(nummark+1len-mark);
                int String.ToNumber(int);
                fract String.ToNumber(fract);
                  
                Dialog.Message("Notice""الجزء الصحيح  "..int.."\r\n".."الجزء العشرى  "..fractMB_OKMB_ICONINFORMATIONMB_DEFBUTTON1); 
                الجزء الصحيح سيكون فى المتغير int
                الجزء العشرى (الكسر) سيكون فى المتغير fract

                بالتوفيق

                تعليق


                • #9


                  [gdwl]
                  كل عام وانتم جميعا بخير
                  كل عام واستاذنا الغالى
                  الاستاذ العالم المتواضع " ثامر أبو بلقيس" بخير
                  الاستاذ ثامر يعد هو الخليفة الاول للاستاذ كريم
                  وهو جدير لاى تقدير واهل للاحترام
                  [/gdwl]

                  تعليق


                  • #10
                    شكرا جزيلا أخي و صديقي خادم المسلمين على مابدر منكم من كلام طيب مشجع
                    رمضان كريم و كل عام و الأمة الإسلامية بخير إن شاء الله

                    ---- مازلت بعد لم أخطو أمتار قليلة في المسار الاحترافي للاستاذ عبد الغني --
                    نأمل بأن لا نبخل

                    تعليق


                    • #11
                      وتنويعا للحلول هذا حل آخر
                      [html]s =Input.GetText("Input1");
                      for w in string.gfind(s, "%w+") do
                      Dialog.Message("Notice", ""..w);
                      end[/html]

                      سيظهر الجزء الصحيح ثم الجزء العشري إن صح التعبير وقلنا جزء عشري


                      وسأحاول أن أضع حلولا أخرى

                      تعليق


                      • #12
                        الأستاذ ياسر هتهت هذا حل باستعمال مصفوفة

                        في GLOBAL FUNCTIONS
                        [html]function rod_balek(one, two)
                        if string.find(one,".") then
                        one = string.gsub(one,"%.","'.'")
                        end
                        if two == "." then
                        two = "'.'"
                        end
                        local x = {}
                        local find = "(.-)" .. two
                        local last = 1
                        local f, d, tam = one:find(find, 1)
                        while f do
                        if f ~= 1 or tam ~= "" then
                        table.insert(x,tam)
                        end
                        last = d+1
                        f, d, tam = one:find(find, last)
                        end
                        if last <= #one then
                        tam = one:sub(last)
                        table.insert(x, tam)
                        end
                        return x
                        end
                        [/html]

                        واستعمل اينبوت و زر أكتب فيه
                        [html]v = rod_balek(Input.GetText("Input1"),".")
                        Dialog.Message("Notice",(v[1]));
                        Dialog.Message("Notice",(v[2]));[/html]

                        حيث ناتج :
                        V1 معبر عن الجزء الصحيح
                        V2 معبر عن الجزء الثاني

                        سلامي ورمضان كريم

                        تعليق


                        • #13
                          السلام عليكم ورحمة الله وبركاته
                          ويمكن استغلال الاضافة Action Extension
                          كود PHP:
                          result AE.StringDelimitedToTable(Input.GetText("Input1"), ".");
                           
                          Dialog.Message("Notice"result[1]);
                           
                          Dialog.Message("Notice"result[2]); 

                          تعليق


                          • #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