PDA

View Full Version : مبتدی: پر کردن متغیرها به وسیله حلقه با ظرفیت مشخص



kolibri
شنبه 16 تیر 1397, 17:23 عصر
سلام و وقت بخیر

رکوردهایی در دیتابیس دارم و باید ورودی رو به صورت مساوی بین اونها تقسیم کنم.
به شرطی که 20 تا 20 تا پر شوند و حداکثر تا 60 تا ظرفیت اونها باشه.
مثلا:
40
28
20
20
20
20

دفعه بعد که ورودی گرفته شد، از رکورد دوم که مقدارش از ضریب 20 کمتر است شروع شود، مثلا 25 تا ورودی جدید داریم:

40
40
33
20
20
20

اولویت اول با آنهایی است که در ضریب کمتر 20 پر نشده اند، مثلا آنهایی که بین 0 و 20 هستند، گام بعد بین 20 و 40 الی ...
اولویت دوم آنهایی هستند که نسبت به ضریب 20 خالی هستند، یعنی اول آنهایی که هنوز به 20 نرسیدن، پر بشوند، بعد آنهایی که 0 هستند به 20 برسند. بعد آنهایی که کمتر از 40 هستند و بعد آنهایی که 20 تایی هستند ....

من این حلقه رو نوشتم، اما از اون رکوردی شروع می شود که هنوز پر نشده و فرقی نمی کند که کدام ضریب 20 باشد.

private void looop(string[] list, int[] Bank) {
int R = 20;
int j = 1;
int x = list.Count();


while (x != 0)
{
foreach (int Q in Bank)
{
if (R - Q > 0 && Q != 0)
{
for (int i = 0; i < R - Q ; i++)
{
Q ++;
x--;
}
}
else if( Q== 0 && j == 1)
{
for (int i = 0; i < R ; i++)
{
Q++;
x--;
}
}
else if ((R * j) - Q > 0 && j > 1 && Q < 60)
{
for (int i = 0; i < R - Q ; i++)
{
Q++;
x--;
}
}
else if ((R * j) - Q == 0 && j > 1 && Q < 60)
{
for (int i = 0; i < R; i++)
{
Q++;
x--;
}
}
j++;


}
}