PHP :: Aufgabe #124

3 Lösungen Lösungen öffentlich

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.)

Lösungen:

vote_ok
von reso (270 Punkte) - 18.12.2017 um 14:18 Uhr
Quellcode ausblenden 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>  

Quellcode ausblenden 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;               
            }
          }

vote_ok
von syneex (2670 Punkte) - 03.08.2018 um 09:57 Uhr
Quellcode ausblenden HTML-Code
<form method="POST" action="">
<input type="number" name="num" step="1">
<hr>
<input type="submit" name="">
</form>


Quellcode ausblenden 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.
vote_ok
von paddlboot (3970 Punkte) - 14.08.2019 um 11:21 Uhr
Quellcode ausblenden 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';
	}
}

?>
1800772

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.