المساعد الشخصي الرقمي

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


عبد الهادي بهاب
25-11-2017, 02:28 PM
السلام عليكم ورحمة الله وبركاته

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

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


يتم توزيع المقاعد بالتناسب حسب عدد الأصوات التي تحصلت عليها كل قائمة مع تطبيق قاعدة الباقي الأقوى. لا تؤخذ في الحسبان عند توزيع المقاعد القوائم التي لم تتحصل على 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

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

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

بالتوفيق

عبد الهادي بهاب
25-11-2017, 02:47 PM
ملف مفتوح
https://up.top4top.net/downloadf-694gxz4t1-rar.html
--------------------
ننتظر الكود في زر حساب المقاعد
---------------

فرح صالحي
25-11-2017, 03:56 PM
موفق بإذن الله ..:abc_152:. لك مني أجمل تحية .

ثامر أبو بلقيس
27-11-2017, 12:07 AM
:abc_065:لا لتسييس الاوتوبلاي ... :abc_138:
هربنا.. من تلك الأجواء وجدناها تمرينا
أخي الوقت جد جد جد ضيق للمشاركة معكم نرجو التماس الأعذار كتبنا تشجيعا :abc_139: ولم نطلع على شيء

عبد الهادي بهاب
27-11-2017, 12:13 AM
:abc_065:لا لتسييس الاوتوبلاي ... :abc_138:
هربنا.. من تلك الأجواء وجدناها تمرينا
أخي الوقت جد جد جد ضيق للمشاركة معكم نرجو التماس الأعذار كتبنا تشجيعا :abc_139: ولم نطلع على شيء

لا عليك مجرد تحفيز و تفعيل للقسم
ساضع المحاولة التي وجدتها

عبد الهادي بهاب
27-11-2017, 12:14 AM
اولا القانون الجديد ينص على 7 بالمائة تعتبر قائمة مقصبة بدلا من 5 بالمائة سابقا
ثانيا نضيف paragraph1 لعرض الثائمة الناجحة
ثالثا نضيف paragraph2 للوائم المقصية عوض label...par
في زر عدد المقاعد


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 = 0 ;
Grid.SetCellText("Grid1",i ,2 , 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;
p = Math.Round(n1*100/som,2);
Grid.SetCellText("Grid1",i ,3 , p);
end

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

min = 7 *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.Floor( n1 / ref) ;
Grid.SetCellText("Grid1",i ,4 , num);
Grid.SetCellText("Grid1",i ,6 , num);
res = n1 - (num * ref);
if n1 < min then
Grid.SetCellText("Grid1",i ,7 , 0);
res = 0 ;
end
Grid.SetCellText("Grid1",i ,5 , res);
gh[i] = res;
end

Table.Sort(gani, nil); v = Table.Count(gani);
for i=1,max do
nn = tonumber(Grid.GetCellText("Grid1", i, 2));
if nn == gani[v] then
part = Grid.GetCellText("Grid1", i, 1);
Paragraph.SetText("Paragraph1",part.. " ÇáÞÇÆãÉ ÇáÊí ÝÇÒÊ ÈÑÆÇÓÉ ÇáãÌáÓ ÇáÔÚÈí ÇáÈáÏí åí ") break
end
end
------------------
Table.Sort(gh, nil);
for i= 1,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",i ,6 , num);
gh[i] = 0;
Nsig = Nsig+1;
SF = Math.Floor(num /3);
if num == 2 then SF = 1 end
Grid.SetCellText("Grid1",i ,7 , SF);

else
Grid.SetCellText("Grid1",i ,6 , num);
SF = Math.Floor(num /3);
if num == 2 then SF = 1 end
Grid.SetCellText("Grid1",i ,7 , SF);
end
end
end
-----------------
until Nsig >= Ns;
end

ثامر أبو بلقيس
27-11-2017, 12:15 AM
لا عليك مجرد تحفيز و تفعيل للقسم
ساضع المحاولة التي وجدتها


أنا كذلك أمزح أخي الكريم ... ومازال 5 سنوات على استعمال الانجاز ( إن أطال الله في أعمارنا) لذلك الشغل في وقته مليح
+
الدلفي لم يترك شيء

عبد الهادي بهاب
27-11-2017, 12:33 AM
التنفيذي

http://u.damasgate.com/001/4/ga5xtcmx39d5l4z3mqdr.png


https://up.top4top.net/downloadf-695lpnr91-rar.html