- Деление на 4 и закръгляне на числа
WT форуми -> PHP MySQL ASP.NET -> Деление на 4 и закръгляне на числа
Създайте нова тема Напишете отговор 
Автор Съобщение
Ticketa
Турист
Турист

Регистриран на: 27/02/2012 3:54 pm

Support: 23
Bonus: 46
Мнения: 325
Мнение 04/03/2019 4:18 pm     Деление на 4 и закръгляне на числа Отговорете с цитат


Привет,
Имам следния казус.
Винаги имам 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
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
djman
Активен
Активен

Регистриран на: 12/09/2009 10:07 am

Support: 107
Bonus: 204
Мнения: 2782
Мнение 04/03/2019 4:48 pm      Отговорете с цитат


PHP code:
<?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);


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

array(4) {
  [0]=>
  float(6)
  [1]=>
  float(8)
  [2]=>
  float(6)
  [3]=>
  float(6)
}
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Ticketa
Турист
Турист

Регистриран на: 27/02/2012 3:54 pm

Support: 23
Bonus: 46
Мнения: 325
Мнение 04/03/2019 4: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 ти давам
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
Страница 1 от 1


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети