PHP :: Aufgabe #124
3 Lösungen
Zahlenübersetzer für Mark
Anfänger - PHP
von Acel007
- 13.08.2016 um 11:05 Uhr
Fred will seinem Freund Mark, der nicht gut Englisch sprechen kann, aber sich darum bemüht, es zu lernen, ein Programm schreiben, welches eine beliebige eingegebene Zahl (von 1 - 999) in die geschriebene, englische Version übersetzt (1 = one, u.s.w). Doch er kann selber nicht gut programmieren und fragt nun dich um Hilfe. Hilf Fred ein Programm zu schreiben, welches die oben beschriebene Aufgabe erfüllt.
(Die englischen Regeln für gescheieben Zahlen müssen eingehalten werden.)
(Die englischen Regeln für gescheieben Zahlen müssen eingehalten werden.)
Lösungen:
HTML-Code
<form action="zahlen_uebersetzer.php" method="get"> <input type="text" name="zahl" pattern="[\d]{1,3}" > <br> <input type="submit" name="los" value="Los"> <br> </form>
PHP-Code
$numbers = array(1=>one,two,three,four,five,six,seven,eight,nine,ten, eleven,twelve,thirteen,fourteen,fifteen,sixteen,seventeen, eighteen,nineteen,twenty,30=>thirty,40=>forty,50=>fifty,60=>sixty, 70=>seventy, 80=>eighty,90=>ninety,100=>hundred); if(isset($_GET['los']) && !empty($_GET['zahl'])) { $zahl = $_GET['zahl']; $zahl_arr = str_split($zahl); switch(count($zahl_arr)) { case 1: $zahl_zusammen = $zahl_arr[1].$zahl_arr[2]; echo $numbers[$zahl_arr[0]]; break; case 2: $zahl_zusammen = $zahl_arr[0].$zahl_arr[1]; if($zahl_zusammen < 20 ) { echo $numbers[$zahl_arr[1]+10]; } else { echo $numbers[$zahl_arr[0]*10]."-".$numbers[$zahl_arr[1]]; } break; case 3: $zahl_zusammen = $zahl_arr[1].$zahl_arr[2]; if($zahl_zusammen < 20 && $zahl_zusammen > 0 ) { echo $numbers[$zahl_arr[0]]." ".$numbers[100]." ".$numbers[$zahl_arr[2]+10]; } elseif($zahl_zusammen == 0) { echo $numbers[$zahl_arr[0]]." ".$numbers[100]; } else { echo $numbers[$zahl_arr[0]]." ".$numbers[100]." ".$numbers[$zahl_arr[1]*10]."-".$numbers[$zahl_arr[2]]; } break; } }
HTML-Code
<form method="POST" action=""> <input type="number" name="num" step="1"> <hr> <input type="submit" name=""> </form>
PHP-Code
<?php $engwords = array(); $engwords = file("H:\\Programme\\Trainyourprogrammer\\Zahlenübersetzer\\rdyengwords.txt"); if($_POST["num"] <= 999 && $_POST["num"] >= 1) { echo $engwords[$_POST["num"]-1]; } else { die("Bitte Zahl zwischen 1 und 999 eingeben."); } ?>
Datei wurde selber erstellt.
PHP-Code
<?php //beliebige Zahl eingeben $zahlDE = 155; $zahlEN = ''; echo $zahlDE.' in englisch:<br/>'; do { if($zahlDE > 99) { $zahlEN .= getEiner(intval($zahlDE/100)); $zahlEN .= ' hundred '; $zahlDE -= intval($zahlDE/100).'00'; } else if($zahlDE > 9) { if(intval($zahlDE/10) == 1) { switch($zahlDE) { case 10: $zahlEN .= 'ten'; $zahlDE -= 10; break; case 11: $zahlEN .= 'eleven'; $zahlDE -= 11; break; case 12: $zahlEN .= 'twelve'; $zahlDE -= 12; break; case 13: $zahlEN .= 'thirteen'; $zahlDE -= 13; break; case 14: $zahlEN .= 'fourteen'; $zahlDE -= 14; break; case 15: $zahlEN .= 'fifteen'; $zahlDE -= 15; break; case 16: $zahlEN .= 'sixteen'; $zahlDE -= 16; break; case 17: $zahlEN .= 'seventeen'; $zahlDE -= 17; break; case 18: $zahlEN .= 'eighteen'; $zahlDE -= 18; break; case 19: $zahlEN .= 'nineteen'; $zahlDE -= 19; break; } } else { $zahlEN .= getZehner(intval($zahlDE/10)); $zahlDE -= (intval($zahlDE/10)).'0'; } } else { if($zahlEN != '') { $zahlEN .= '-'; } $zahlEN .= getEiner($zahlDE); $zahlDE -= $zahlDE; } }while($zahlDE > 0); echo $zahlEN; function getEiner($zahl) { switch ($zahl) { case 1: return 'one'; case 2: return 'two'; case 3: return 'three'; case 4: return 'four'; case 5: return 'five'; case 6: return 'six'; case 7: return 'seven'; case 8: return 'eight'; case 9: return 'nine'; } } function getZehner($zahl) { switch($zahl) { case 2: return 'twenty'; case 3: return 'thirty'; case 4: return 'fourty'; case 5: return 'fifty'; case 6: return 'sixty'; case 7: return 'seventy'; case 8: return 'eighty'; case 9: return 'ninety'; } } ?>