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

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

تمرين ...... الطرح بواسطة المسابقة نحو الصفر

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

  • تمرين ...... الطرح بواسطة المسابقة نحو الصفر


    السلام عليكم

    لفت انتباهي طريقة من طرق الطرح الحسابية
    تسمى المسابقة نحو الصفر
    وهذا نموذج للطريقة من اجل حساب حاصل طرح
    1932-1889


    مثال اخر من اجل 3863-1779


    السؤال : كيف اصمم كود يقوم بمثل هذه العملية





  • #2
    السلام عليكم

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

    كود PHP:
    nn1String.ToNumber(Input.GetText("Input1"));
    nn2String.ToNumber(Input.GetText("Input2"));
    Label.SetText("Label2"nn1-nn2);
    if 
    nn1<1000 or nn2<1000 then
    Dialog
    .Message("","ÇßÊÈ ÚÏÏ ÇßÈÑ ãä 1000");
    else

    if 
    nn1 nn2 then
    Input
    .SetText("Input1"nn2);
    Input.SetText("Input2"nn1);
    else

    n1String.ToNumber(Input.GetText("Input1"));
    n2String.ToNumber(Input.GetText("Input2"));

    n11 String.Mid(n111);
    n22 String.Mid(n211);
    v1=String.Mid(n111)*1000
    v2
    =String.Mid(n211)*1000

    if v2<v1 then
    Label
    .SetText("D1"v2);
    else
    Label.SetText("D1"v1);
    end
    Label
    .SetText("L1"n1-String.ToNumber(Label.GetText("D1")));
    Label.SetText("P1"n2-String.ToNumber(Label.GetText("D1")));


    for 
    i=1,do
    if 
    String.ToNumber(Label.GetText("P"..i))>1000 then
    Label
    .SetText("D"..i+11000);
    elseif 
    String.ToNumber(Label.GetText("P"..i))<1000 and  String.ToNumber(Label.GetText("P"..i))>100 then
    Label
    .SetText("D"..i+1String.Mid(Label.GetText("P"..i), 11)*100);
    elseif 
    String.ToNumber(Label.GetText("P"..i))<100 and  String.ToNumber(Label.GetText("P"..i))>10 then
    Label
    .SetText("D"..i+1String.Mid(Label.GetText("P"..i), 11)*10);
    elseif 
    String.ToNumber(Label.GetText("P"..i))<10 then
    Label
    .SetText("D"..i+1Label.GetText("P"..i));
    end

    Label
    .SetText("L"..i+1String.ToNumber(Label.GetText("L"..i))-String.ToNumber(Label.GetText("D"..i+1)));
    Label.SetText("P"..i+1String.ToNumber(Label.GetText("P"..i))-String.ToNumber(Label.GetText("D"..i+1)));
    end
    end
    end

    for ii=1,do
    if 
    String.ToNumber(Label.GetText("P"..ii))<0 then
    Label
    .SetVisible("P"..ii,false);
    elseif 
    String.ToNumber(Label.GetText("L"..ii))<0 then
    Label
    .SetVisible("L"..ii,false);
    elseif  
    String.ToNumber(Label.GetText("D"..ii)) <0 then
    Label
    .SetVisible("D"..ii,false);
    end
    end 
    التطبيق التنفيذي
    http://www.mediafire.com/download/j4...qu14/moins.rar

    الملف المفتوح
    http://www.mediafire.com/download/5f...w5s5/moins.apz

    تحياتي

    تعليق


    • #3
      3863 - 1779 = 20894 إلى غاية شرح هذه النتيجة في مثالك الثاني
      حالات مثل هذه تناقش احتمالين حين تكون المراتب الكبرى متساوية و في حالة عدم تساويها مثل المثال السابق
      3 ألاف تطرح من ألف واحدة أي هنا الالاف غير متساوية عكس المثال الأول مراتب الالاف متساوية 1932 - 1889 فكلاهما ألفا

      في انتظار تبرير النتيجة المشار اليها

      تعليق


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

        هاهي محاولة سريعة وفق الحالة الثانية و في مثالي اخترت العملية الثانية و التي تعنى بعدد الالاف لا يكون متساوي
        و غير مشترط أربع مراتب المهم عدد الالاف لا بكونا متساويان - رقم المرتبة الكبرىيختلف عن الأخرى - وعدد المراتب متساوي
        كود PHP:
        =3863
        =1779
        ""
        repeat
        d1
        =x-1000;d2=y-1000
        x
        =d1;y=d2
        v
        =v..x.."-"..y.."\r\n"
        until String.Length(x)-String.Length(y) ==1;
        k=String.ToNumber(String.Mid(xString.Length(x)-1String.Length(x)))
        if 
        ~=0 then
        repeat
        d3
        =x-k;d4=y-k
        x
        =d3;y=d4
        v
        =v..x.."-"..y.."\r\n"
        until k ~=0;
        end
        d3
        =x-String.ToNumber((String.Mid(y11)*100))
        d4=y-String.ToNumber((String.Mid(y11)*100))
        x=d3;y=d4
        v
        =v..x.."-"..y.."\r\n"
        d3=x-y;d4=y-y
        x
        =d3;y=d4
        v
        =v..x.."-"..y.."\r\n"
        ------------
        Dialog.Message("Notice",); 
        موفق

        تعليق


        • #5
          المشاركة الأصلية بواسطة ثامر أبو بلقيس مشاهدة المشاركة
          3863 - 1779 = 20894 إلى غاية شرح هذه النتيجة في مثالك الثاني
          حالات مثل هذه تناقش احتمالين حين تكون المراتب الكبرى متساوية و في حالة عدم تساويها مثل المثال السابق
          3 ألاف تطرح من ألف واحدة أي هنا الالاف غير متساوية عكس المثال الأول مراتب الالاف متساوية 1932 - 1889 فكلاهما ألفا

          في انتظار تبرير النتيجة المشار اليها
          لم افهم بالملاحظة الاولى فالكود ناجح في المثال


          جربته مع اعداد 4 ارقام .......... و طبعا يحتاج الى تعديل

          تعليق


          • #6
            الملاحظة التي استوقفتك مبنية على معطيات التمرين و ليس المحاولة
            حتى الفارق الزمني لا يسمح بالاطلاع

            تعليق


            • #7
              المشاركة الأصلية بواسطة ثامر أبو بلقيس مشاهدة المشاركة
              السلام عليكم ورحمة الله وبركاته

              هاهي محاولة سريعة وفق الحالة الثانية و في مثالي اخترت العملية الثانية و التي تعنى بعدد الالاف لا يكون متساوي
              و غير مشترط أربع مراتب المهم عدد الالاف لا بكونا متساويان - رقم المرتبة الكبرىيختلف عن الأخرى - وعدد المراتب متساوي
              كود PHP:
              =3863
              =1779
              ""
              repeat
              d1
              =x-1000;d2=y-1000
              x
              =d1;y=d2
              v
              =v..x.."-"..y.."\r\n"
              until String.Length(x)-String.Length(y) ==1;
              k=String.ToNumber(String.Mid(xString.Length(x)-1String.Length(x)))
              if 
              ~=0 then
              repeat
              d3
              =x-k;d4=y-k
              x
              =d3;y=d4
              v
              =v..x.."-"..y.."\r\n"
              until k ~=0;
              end
              d3
              =x-String.ToNumber((String.Mid(y11)*100))
              d4=y-String.ToNumber((String.Mid(y11)*100))
              x=d3;y=d4
              v
              =v..x.."-"..y.."\r\n"
              d3=x-y;d4=y-y
              x
              =d3;y=d4
              v
              =v..x.."-"..y.."\r\n"
              ------------
              Dialog.Message("Notice",); 
              موفق
              جميل جدا ...... ......... يحقق المطلوب

              -------------------
              استفسار : بخصوص الدوال until و repeat الا تشبه دالة التكرار for و if

              تعليق

              مواضيع تهمك

              تقليص

              المنتدى: القسم العام نشرت بواسطة: 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