Page 1 of 1

Деление на 4 и закръгляне на числа

Posted: Mon Mar 04, 2019 2:18 pm
by Ticketa
Привет,
Имам следния казус.
Винаги имам 4 колони , като те ми служат да деля на четири - винаги.

Пример:
колона1, колона2, колона3, колона4

Деление на: 4
Брой: 90
90/4=22.50

Създаваме сбор който е равен на 90 ;
20 + 30 + 20 + 20 = 90

Брой: 20
20/4 = 5
5 + 5 + 5 + 5 = 20

Брой: 26
26/4 = 6,5
6 + 8 + 6 + 6 = 26

Брой: 54
54/4=13,5
13 + 15 + 13 + 13 = 54

Й така нататък. Идеята е числата да се разпределят по равно дори Брой да не се дели на 4 и колона2 да е повече или равна на останалите. Опитвах някакви експерименти като: но не се получи....

<?php
$factor=4;
for($x=0; $x<4; ++$x){
$number=22.5;
echo "Number: $number Becomes: ";
if($remainder=$number%$factor){
$number+=$factor-$remainder;
}
echo "$number\n";
}

Брой - може да бъде 7/4 , можи да бъде й 107/4
1+4+1+1=7

25+32+25+25=107

Posted: Mon Mar 04, 2019 2:48 pm
by djman
[php]<?php
function calculate_columns(int $total, int $size, int $prefer = 1): array {
$columns = [];
for ($i = 0; $i < $size; $i++) {
$columns[$i] = floor($total / $size);
}
$columns[$prefer] += $total - $columns[$prefer] * $size;
return $columns;
}

$columns = calculate_columns(26, 4);
var_dump($columns);[/php]

$total - сумата, $size - колони, $prefer - къде да добави остатъка.

Code: Select all

array&#40;4&#41; &#123;
  &#91;0&#93;=>
  float&#40;6&#41;
  &#91;1&#93;=>
  float&#40;8&#41;
  &#91;2&#93;=>
  float&#40;6&#41;
  &#91;3&#93;=>
  float&#40;6&#41;
&#125;

Posted: Mon Mar 04, 2019 2:59 pm
by Ticketa
Близо бях

<?php
$tot = 20; //брой
$groups = 4; //деление
$numbers = array();
for($i = 1; $i < $groups; $i++) {
$num = rand(1, $tot-($groups-$i));
$tot -= $num;
$numbers[] = $num;
}
$numbers[] = $tot;
print_r($numbers);

Array
(
[0] => 8
[1] => 9
[2] => 2
[3] => 1
)

+1 ти давам