X

تمرين .......كيف نحسب عدد المقاعد في الانتخابات

AutoPlay Media Studio and Generate All In One Tutorials

 
  • تصفية
  • الوقت
  • عرض
مسح الكل
مشاركات جديدة

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

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

    كيف تحسب :
    ----------------------------------------------
    مثال على توزيع المقاعد


    يتم توزيع المقاعد بالتناسب حسب عدد الأصوات التي تحصلت عليها كل قائمة مع تطبيق قاعدة الباقي الأقوى. لا تؤخذ في الحسبان عند توزيع المقاعد القوائم التي لم تتحصل على 5% على الأقل من الأصوات المعبر عنها.

    و لتوضيح هذا التوزيع، نأخذ مثال عن دائرة انتخابية لها الحق في 4 مقاعد و التي سجلت مشاركة 5 قوائم في الاقتراع. بعد انتهاء التصويت، بلغ عدد الأصوات المعبر عنها 106800 صوتا موزعا كما يلي:


    - القائمة أ = 45.500

    - القائمة ب = 33.900

    - القائمة ج = 17.800

    - القائمة د = 6.400

    - القائمة هـ = 3.200




    يبلغ حد الخمسة بالمائة 5 % من الأصوات المعبر عنها، الذي لا يسمح بتوزيع المقاعد، في مثالنا هذا 5340. و بالتالي فإن القائمة هـ تجد نفسها مقصاة من هذا التوزيع.



    يتم توزيع المقاعد على القوائم الباقية على حسب المعامل الانتخابي الذي يتم حسابه كما يلي:


    الأصوات المعبر عنها (منقوصة أصوات القوائم التي تحصلت على أقل من 5 % من الأصوات المعبر عنها)


    ________________________________________________________
    المعامل الانتخابي =


    عدد المقاعد المطلوب شغلها

    في مثالنا، يساوي المعامل الانتخابي
    25900 =

    106800 - 3200


    ____________________
    =

    4



    و بهذا، فإن لكل جزء بلغ25900 صوتا الحق في مقعد.




    إذن، يتم التوزيع الأول للمقاعد على القوائم الخمسة المشاركة في الاقتراع كما يلي:



    - القائمة أ التي تحصلت على 45500 صوت تحوز على مقعد واحد و تحتفظ ببقية 19600 صوت.

    - القائمة ب المتحصلة على 33900 صوت تحوز على مقعد واحد و تحتفظ ببقية 8000 صوت.

    - القائمة ج المتحصلة على 17800 صوت لا تحوز على أي مقعد و تبقى محتفظة بـ 17800 صوت.

    - القائمة د المتحصلة على 6400 صوت لا تحوز على أي مقعد و تبقى محتفظة بـ 6400 صوت.

    - تقصى القائمة هـ لعدم استيفائها الحد الأدنى لـ 5 â„… من الأصوات المطلوبة المعبر عنها.


    يلي هذا التوزيع، توزيع ثان و يتمثل في التوزيع عن طريق التناقص لعدد المقاعد المتبقية على القوائم المتحصلة على أقوى نسبة باقية من الأصوات.


    و بهذا نتحصل على:



    - القائمة أ : 19600 صوت

    - القائمة ج : 17800 صوت

    - القائمة ب : 8000 صوت

    - القائمة د : 6400 صوت


    بالنظر إلى أنه بقي من التوزيع الأول مقعدان للتوزيع، تحوز القوائم أ و ج بالتالي كلاهما على مقعد لتحصلهما على أقوى عدد من الأصوات الباقية.



    يكون التوزيع النهائي للأصوات في مثالنا كالتالي:



    - القائمة أ = 1+1 = 2

    - القائمة ب = 1

    - القائمة ج = 1

    - القائمة د = 0
    بالنسبة لنسبة المرأة في المقاعد فهي ثلث المقاعد ......و اذا كان مقعدين فلها مفعد اليا
    -----------------------------------------

    ضعوا في مشروعكم غريد
    و نريد كود يحسب ما سبق

    بالتوفيق

  • #2
    يتبع:
    Originally posted by عبد الهادي بهاب
    ملف مفتوح
    *
    وبالمرفقات
    --------------------
    ننتظر الكود في زر حساب المقاعد
    ---------------

    *
    الملفات المرفقة
    تعليق

    • #3
      يتبع:
      Originally posted by عبد الهادي بهاب
      اولا القانون الجديد ينص على 7 بالمائة تعتبر قائمة مقصبة بدلا من 5 بالمائة سابقا
      ثانيا نضيف paragraph1 لعرض الثائمة الناجحة
      ثالثا نضيف paragraph2 للوائم المقصية عوض label...par
      في زر عدد المقاعد


      PHP Code:
      som 0;
      Label.SetText("par""")
      Ns  tonumber(Input.GetText("Input2"));
      max tonumber(Input.GetText("Np"));
      ---------
      sommme ------------------
      for 
      i=1,max do
       if 
      Grid.GetCellText("Grid1",i,2) == "" then
       n1 
      ;
       
      Grid.SetCellText("Grid1",,0);
       else
      n1 tonumber(Grid.GetCellText("Grid1",i,2));
      end
      som 
      som n1;
      end
      Label
      .SetText("Nsom"som);

      -------------- 
      pourcentage ------------
      gani={};
      for 
      i=1,max do
      n1 tonumber(Grid.GetCellText("Grid1",i,2)); gani[i] = n1;
      Math.Round(n1*100/som,2);
      Grid.SetCellText("Grid1",,p);
      end

      ------------ 7liste eliminiée -------------

      min *som 100 ;
      par ={}; d=1;
      for 
      i=1,max do
      ng tonumber(Grid.GetCellText("Grid1",i,2));
      part Grid.GetCellText("Grid1",i,1);
        if 
      ng min then
        par
      [d] =  part;
        else 
      Table.Remove(par,i);
        
      end d=d+1;
      end

      igli 
      ="";
      for 
      i,n in pairs(par) do
      igli igli .." - " ..n
      end
      Paragraph
      .SetText("Paragraph2"igli)
      ------------ 
      nouveau somme -------------

      for 
      i=1,max do
      n1 tonumber(Grid.GetCellText("Grid1",i,2));
        if 
      n1 min then
        som 
      som n1 ;
        
      end
      end


      Label
      .SetText("safi"som);
      ref Math.Floor(som Ns);
      Label.SetText("ref"ref);
      gh={};
      for 
      i=1,max do
      n1 tonumber(Grid.GetCellText("Grid1",i,2));
      part Grid.GetCellText("Grid1",i,1);
      num Math.Floorn1 ref) ;
      Grid.SetCellText("Grid1",,num);
      Grid.SetCellText("Grid1",,num);
      res n1 - (num ref);
       if 
      n1 min then
       Grid
      .SetCellText("Grid1",,0);
       
      res ;
       
      end
      Grid
      .SetCellText("Grid1",,res);
      gh[i] = res;
      end

      Table
      .Sort(ganinil); Table.Count(gani);
      for 
      i=1,max do
      nn tonumber(Grid.GetCellText("Grid1"i2));
        if 
      nn == gani[vthen
      part 
      Grid.GetCellText("Grid1"i1);
      Paragraph.SetText("Paragraph1",part.. " أ‡أ،أ‍أ‡أ†أ£أ‰ أ‡أ،أٹأ* أ‌أ‡أ’أٹ أˆأ‘أ†أ‡أ“أ‰ أ‡أ،أ£أŒأ،أ“ أ‡أ،أ”أڑأˆأ* أ‡أ،أˆأ،أڈأ* أ¥أ* ") break
      end
      end
      ------------------
      Table.Sort(ghnil);
      for 
      i1,max do
      --------------
      repeat
      Nsig 
      0;

      for 
      i=1,max do
      num tonumber(Grid.GetCellText("Grid1",i,6));
      Nsig Nsig num ;
      end


      ------sige reste--------
      if 
      Nsig Ns then
      for i=1,max do
      n1 =  tonumber(Grid.GetCellText("Grid1",i,5));
      num tonumber(Grid.GetCellText("Grid1",i,6));
        if 
      n1 == gh[#gh] then num = num+1;
        
      Grid.SetCellText("Grid1",,num);
        
      gh[i] = 0;
        
      Nsig Nsig+1;
         
      SF Math.Floor(num /3);
          if 
      num == 2 then SF 1 end  
          Grid
      .SetCellText("Grid1",,SF);
       
        else
        
      Grid.SetCellText("Grid1",,num);
         
      SF Math.Floor(num /3);
          if 
      num == 2 then SF 1 end  
          Grid
      .SetCellText("Grid1",,SF);
        
      end
      end
      end
      -----------------
      until Nsig >= Ns;
      end 
      تعليق

      • #4
        يتبع:
        Originally posted by عبد الهادي بهاب
        التطبيق للمشروع



        *
        او
        *
        تعليق
        Working...
        X