Roman2Decimal

Ujawniam tajemnice firmy Komputronik S. A. Publikuje kod, jaki by?? do napisania w trakcie rekrutacji na php developera w komputroniku:

zamiana liczb rzymskich na liczby dziesi?tne w php

<?
function convert($string) {
	$roman = array('I'=> '1','V'=>'5','X'=>'10','L'=>'50','C'=>'100','D'=>'500','M'=>'1000');
	for($i=0; $i<count($string); $i++) {
		$string[$i] = strtr($string[$i], $roman);
	}
	return $string;
}
function sumuj($tablica) {
	for($i=0; $ i< count($tablica); $i++) {
		if(isset($tablica[$i+1]) && ($tablica[$i]<$tablica[$i+1])) {
			$suma += $tablica[$i+1] - $tablica[$i];
			$i++;
		}else{
			$suma += $tablica[$i];
		}
	}
	return $suma;

	}

$string = array('M','I', 'M');
if(!is_array($string))
	$string = explode(' ',$string);
echo("<pre>");
print_r($string);
echo("</pre>");
$roman = array('I','V','X','L','C','D','M');
for($i=0; $i<count($string); $i++) {
	if(!in_array($string[$i], $roman))
		break;
	else{
		$tab = convert($string);
		echo("<pre>");
		print_r($tab);
		echo("</pre>");
		$suma = sumuj($tab);
		echo("<b>".$suma."</b>");

	}
}

?>

9 myśli nt. „Roman2Decimal

  1. Pala

    Poprawione linijki:

    for($i=0; $i

    Poza tym czemu to nie dzia??a tak:echo rom@dec(‚MCM’);?

  2. Pala

    Poprawione linijki:
    for($i=0; $i < count($tablica); $i++) {
    if(isset($tablica[$i+1]) && $tablica[$i] < $tablica[$i+1]) {

    Poza tym czemu to nie dzia??a tak:echo rom@dec(‚MCM’);?

    PS. Sorry, nie mo??na wpisa? znaku „mniejsze od”, bo wp to wywala.

  3. mmx3 Autor wpisu

    pala: dzia??a wszystko ??adnie. nie mam stylu do pre w wp i poprostu poobcina??o mi. skrypt styka??.

  4. mmx3 Autor wpisu

    nie dzia??a ze stringiem bo w zadaniu napisane by??o ??e danymi wej??ciowymi jest tablica

  5. mmx3 Autor wpisu

    jeszcze jedno dlatego jest

    $i < count($string)-1

    bo sumuje element nast?pny i to chroni przed wyjazdem poza zakres.

  6. Pala

    Przed wyjazdem mo??e i chroni, tylko je??eli przedostatnia cyfra nie b?dzie mniejsza od ostatniej (np. MM), to ostatnia cyfra nie b?dzie w og??le uwzgl?dniona (u Ciebie MM = 1000).

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>