Napisz program, który sprawdza, czy podana wartość z formularza da się przekonwertować na liczbę, i określa, czy jest to liczba całkowita, rzeczywista czy wartość szesnastkowa. Program powinien obsługiwać przecinek jako separator dziesiętny oraz ujemne liczby szesnastkowe (np. -0xff). Wynik ma być wyświetlony w czytelny sposób, pokazując zarówno wprowadzoną wartość, jak i rezultat jej analizy.
Wskazówki dla ucznia:
- Użyj funkcji is_numeric(), aby sprawdzić, czy wartość jest numeryczna.
- Zamień przecinek na kropkę za pomocą str_replace(), ponieważ PHP rozpoznaje liczby zmiennoprzecinkowe z kropką (np. 0.34).
- Do konwersji liczb szesnastkowych (np. 0xff lub -0xff) możesz użyć intval() z podstawą 16, ale zwróć uwagę na znak minusa.
- Sprawdź typ liczby po konwersji za pomocą is_int() i is_float().
- Zabezpiecz dane wejściowe używając htmlspecialchars(), aby uniknąć problemów z XSS.
";
if (is_numeric($input)) {
if (is_int(0 + $input)) {
$result .= "Jest to liczba całkowita.
";
} elseif (is_float(0 + $input)) {
$result .= "Jest to liczba rzeczywista.
";
}
} elseif (str_starts_with($input, "0x") || str_starts_with($input, "-0x")) {
$hexValue = hexdec($input);
$result .= "Jest to liczba szesnastkowa. Wartość dziesiętna: $hexValue
";
} else {
$result .= "Nie można przekonwertować na liczbę.
";
}
echo $result;
}
?>