Сортировка массива

louvre

Новичок
Сортировка массива

У меня возникла следующая проблема:
Есть у меня ассоциированный массив $massiv сортирую его следующим образом:
//при этом ввожу переменные для последующего условия
$kv=$sp5/50;
$proc= $sp5*3/100;
$num=0;
$sum=0;
arsort ($massiv);

foreach ($massiv as $key=>$val)
{
//вот условие, при котором сортируются только те данные, которые больше $proc
if ($val>=$proc)
{

$num++;
$m1=(int)($val/$kv);

$m2=$val/$kv;
//далее вывожу в массив остаток от деления
$ost[]=$m2-$m1;
$sum+=(int)($val/$kv);
$os=50-$sum;
//ну и вывожу на печать таблицу с данными
print "<table border=1><tr><td>$num</td><td width=93%>$key</td><td width=2%>$val<br></td><td width=5%>$m1</td></tr></table>";
}
}
Все нормально получается, но только проблема в том, что мне надо еще выбрать из массива $ost максимальные элементы, число которых равно $os и после выборки, добавить к $m1 единицу, короче грубо говоря, добавить единицу мне надо только к тем элементам $m1, у которых максимальный $ost....
Кто знает как сделать, помогите плиз...
 

RigVan

Постоянный член клуба
louvre
Объясни, что ты хочешь конкретно сделать, суть самой задачи?
Забудь не надолго про код... А то чего-то голова немного кругом идет от такой постановки вопроса :)
 

louvre

Новичок
Объясняю...
Сделал я программу на php для подсчета голосов. Ну, например, у нас есть какое-то количество партий в какой-нибудь совет, там такая система, что допустим в совет со всех партий могут пройти всего 50 человек, вот надо этих людей и определить, что я собственно и начал делать. Там сначала вводятся данные на 74 участках. В итоге суммируются голоса введенные ранее. Определяется сколько партий берет участие в распределении мест, это делается таким образом, что каждая партия должна набрать 3 или более процентов голосов. Далее принимают участие в распределении мест только те партии, которые преодолели 3 - х процентный барьер, количечество мест же определяется по "избирательной квоте", т.е. количество набраных партией голосов делится на число мест, в нашем случае это число равно 50. Но, если так делить, то получается число дробное, так вот поэтому я сделал, что число мест, которое набрала каждая из отсортированных партий будет целое, далее вычисляется остаток от деления и сколько осталось нераспределенных мест. Дальше во я застрял и не могу придумать как это сделать, принцип такой, что у кого больше дробный остаток, тот и получает по месту, естественно распределяются они до тех пор пока кончатся нераспределенные места...
Просто по сути это опять же надо делать сортировкой, но сортировка в сортировке неполучатеся, еще одно условие тоже не прокатит, думал выводить отсортрированную талицу отдельный файл, так тоже там своя лажа, что партий может быть отсортированно сколько угодно. Впринципе, можно оставить все как есть, вывести напечать еще остаток, но потом перегонять все в электронную таблицу и там это легко посчитать как-то не солидно, согласитесь...
Надеюсь разберетесь во всем этом бреде, что я написал, просто вот такие условия поставили для наприсания программы, блин...
 
Сверху