PHP :: Aufgabe #225

4 Lösungen Lösungen öffentlich

Array von Zahlen in die nächstgelegene durch 5 teilbare Zahl umwandeln

Anfänger - PHP von Gustl - 08.05.2019 um 20:08 Uhr
Schreibe ein Programm welches aus einem Array von Dezimalzahlen diese Zahlen in die nächstgelegene durch 5 teilbare Zahl umwandeln.

Etwa so:

Konsolenausgabe:

 7.1 => 5
8.4 => 10
-2.4 => 0
-2.6 => -5
-8.3 => -10

Lösungen:

vote_ok
von rainer (60 Punkte) - 24.05.2019 um 11:34 Uhr
Quellcode ausblenden PHP-Code

$ZAHLEN = array( 7.1, 8.4, -2.4, -2.6, -8.3 );

foreach( $ZAHLEN as $x ) {
   
    $ausgangswert = $x;
        
	if ( $x >= 0 ) $vorzeichen = 1;
	else $vorzeichen = -1;    
    
	$x = abs( $x );
    
	$rest5 = fmod( $x, 5 ); 
	
	if( $rest5 < 2.5 ) {
		$result = $x - $rest5;
	}
	else {
		$result = $x - $rest5 + 5;
	}

	$result = $vorzeichen*$result;
	if( $result == -0 ) $result = abs( $result );
    
    echo $ausgangswert." => ".$result."<br>";
    
}

vote_ok
von Exception (5030 Punkte) - 19.06.2019 um 20:37 Uhr
Quellcode ausblenden PHP-Code
<?php

$numbers = array(
    7.1,
    8.4,
    -2.4,
    -2.6,
    -8.3
);

array_walk($numbers, function(&$value) {
    $value = round($value / 5) * 5;
});

print_r($numbers);

Konsolenausgabe:

Array
(
[0] => 5
[1] => 10
[2] => -0
[3] => -5
[4] => -10
)
vote_ok
von pornstarIRL (410 Punkte) - 14.11.2019 um 16:04 Uhr
Quellcode ausblenden PHP-Code
function divisibleByFive($numbers){
  if (is_array($numbers)){
    foreach($numbers as $key => $value){
      if ($value % 5 != 0 ){
        echo $value;

        if(5 - ($value % 5) < $value % 5){
          $value += 5 - ($value % 5);
          five (round($value));
        }else{
          $value -= $value % 5;
          five(round($value));
        }
      }else{
        echo $value . "<br>";
      }
    }
  }else{
    if ($numbers % 5 != 0 ){
      if(5 - ($numbers % 5) < $numbers % 5){
        $numbers += 5 - ($numbers % 5);
        five (round($numbers));
      }else{
        $numbers -= $numbers % 5;
        five(round($numbers));
      }
    }else{
      echo " => " . $numbers . "<br>";
    }
  }
}

$a = [33,6,76, 113.5];
divisibleByFive($a);


Konsolenausgabe:

33 => 35
6 => 5
76 => 75
113.5 => 115
vote_ok
von pornstarIRL (410 Punkte) - 14.11.2019 um 16:33 Uhr
Quellcode ausblenden PHP-Code
function divisibleByFive($numbers){
  if (is_array($numbers)){
    foreach($numbers as $key => $value){
      if ($value % 5 != 0 ){
        echo $value;

        if(5 - ($value % 5) < $value % 5){
          $value += 5 - ($value % 5);
          divisibleByFive (round($value));
        }else{
          $value -= $value % 5;
          divisibleByFive(round($value));
        }
      }else{
        echo $value . "<br>";
      }
    }
  }else{
    if ($numbers % 5 != 0 ){
      if(5 - ($numbers % 5) < $numbers % 5){
        $numbers += 5 - ($numbers % 5);
        divisibleByFive (round($numbers));
      }else{
        $numbers -= $numbers % 5;
        divisibleByFive(round($numbers));
      }
    }else{
      echo " => " . $numbers . "<br>";
    }
  }
}

$a = [33,6,76, 113.5];
divisibleByFive($a);


Konsolenausgabe:

33 => 35
6 => 5
76 => 75
113.5 => 115