römische Ziffern erstellen

DerZeus

Grünschnabel
Also

Ich will römische Ziffern aus einer ganz beliebigen Zahl erstellen. Die Zahl liegt immer im Bereich von 1 bis 1000, ist also problemlos als römische Ziffer darstellbar. Gibt es in PHP eine Funktion(ich hab im Handbuch keine gefunden) oder hat/kennt jemand einen Algoryhtmus?

Mfg
DerZeus
 
Mir war langweilig...

Deshalb:
PHP:
$dec = 3873;
echo "Dezimal: ".$dec."<br>";
echo "römisch: ".dec2rom($dec);
function dec2rom($dec){
   if ($dec > 3999) echo "Weiter als 3999 konnten die alten Sandalenträger nciht zählen.";
   else {
        $tausender = floor($dec / 1000);
        $rest = $dec % 1000;
        $hunderter = floor($rest / 100);
        $rest = $rest % 100;
        $zehner = floor ($rest / 10);
        $rest = $rest % 10;
        $einer = $rest / 1; //
        //Tausender:
        for ( $i = 1; $i <= $tausender; $i++) $output .= "M";
        //Hunderter:
        $output .= wandel($hunderter,"C","D","M");
        //Zehner:
        $output .= wandel($zehner,"X","L","C");
        //Einer:
        $output .= wandel($einer,"I","V","X");
        return $output;
}
}
function wandel($ziffer,$grundzahl,$zwischenzahl5,$zwischenzahl10){
            if ($ziffer <= 3) {for ( $i = 1; $i <= $ziffer; $i++) $zahl .= $grundzahl;}
            if ($ziffer == 4) {$zahl= $grundzahl.$zwischenzahl5;}
            if ($ziffer == 5) {$zahl= $zwischenzahl5;}
            if ($ziffer > 5 AND $ziffer < 9) {$zahl = $zwischenzahl5; for ( $i = 1; $i <= $ziffer-5; $i++) $zahl .= $grundzahl;}
            if ($ziffer == 9) $zahl = $grundzahl.$zwischenzahl10;
            return $zahl ;
   }
?>

hab ich nach den regeln, die ich hier gefunden habe gebastelt. Ich garantiere für gar nix:-) :-) :-)
sollte sich vieleicht nochmal jemand durchlesen....

tob
 
kann sie kochen, putzen etc.? zahlst du das Porto?

naja ich glaube wir kommen vom Thema ab...
tob
 
Ähm ich bedanke mich aber ich hab was besseres gefunden nachdem nach ein ppar stunden keine Antwort stand

PHP:
function roman($x)
{
	$numbers = array("1", "4", "5", "9", "10", "40", "50", "90", "100", 
    "400", "500", "900", "1000");
	$romans = array("I", "IV", "V", "IX", "X", "XL", 
    "L", "XC", "C", "CD", "D", "CM", "M");
	$result="";
	$i=12;
	while($i>=0)
	{
		while($x >= $numbers[$i])
		{
			$x = $x - $numbers[$i];
			$result = $result . $romans[$i];
		}
		$i=$i-1;
	}
	return $result;
}

ist ein bißchen einfacher
 
dasss ja mal oberlame

da macht er sich die mühe, schreibt ein script, klar verständlich, und dann kommst du mit so nem poser teil, arg :mad: :-)
 
Es gibt noch ne 3. ganz einfache methode.. istn kleiner trick!
Kannste hier bewundern http://muckelhasen.tk
hab ich da verwendet um nen umrechner zu basteln:


<form action='$SELF_PHP'>
<input type='text' name='arab'>
<input type='submit' value='rechnen'>
</form>

<ol type='I' start='$arab'>
<li></li>
</ol>


Also nen eingabefeld, ind em man die zahl einträgt udn unten eine Liste die die menü punkte in Römischen ziffern ausgibt. Und dann einfach die Liste bei der eingegebenen Variablen Zahl anfangen lassen udn tadaaa! Dann hat man seinen umrechner. Einziger Nachteil, hinter der Römischen zahl ist ein . wegen 1. = I. ! Ist ja ne aufzählung, eigentlich! :)

Gre@tz Msv P!!!
 
Zuletzt bearbeitet:
Zurück