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

C++ JAVA
Post Reply
User avatar
Ticketa
Турист
Турист
Posts: 507
Joined: Mon Feb 27, 2012 1:54 pm
Answers: 23
Location: in /root
Contact:

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

Post by Ticketa » Mon Mar 04, 2019 2:18 pm

Привет,
Имам следния казус.
Винаги имам 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

User avatar
djman
Гуру
Гуру
Posts: 2800
Joined: Sat Sep 12, 2009 8:07 am
Answers: 107

Post by djman » Mon Mar 04, 2019 2:48 pm

[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;

User avatar
Ticketa
Турист
Турист
Posts: 507
Joined: Mon Feb 27, 2012 1:54 pm
Answers: 23
Location: in /root
Contact:

Post by Ticketa » Mon Mar 04, 2019 2:59 pm

Близо бях

<?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 ти давам

Post Reply