Napisz program, który wczytuje liczby całkowite do tablicy o wymiarach n x m i wyświetla wskaźniki liczb podzielnych jednocześnie przez 3 i 5 (np. 15, 30). Użytkownik podaje n i m oraz wprowadza liczby do komponentu textarea oddzielone przecinkami. Program powinien zweryfikować, czy n i m są liczbami całkowitymi, czy podane wartości są liczbami całkowitymi, czy ich liczba zgadza się z n x m, a następnie wyświetlić tablicę i indeksy (w formacie [wiersz][kolumna]) wszystkich liczb podzielnych przez 3 i 5.
Wskazówki dla ucznia:
- Sprawdź, czy n i m są liczbami całkowitymi (is_numeric() i is_int() po konwersji).
- Użyj explode(), aby rozdzielić ciąg z textarea na tablicę liczb na podstawie przecinków.
- Zweryfikuj, czy każda wartość jest liczbą całkowitą za pomocą is_numeric() i sprawdzenia, czy po konwersji na int nie traci wartości dziesiętnej.
- Przekształć jednowymiarową tablicę na dwuwymiarową, rozdzielając ją na wiersze po m elementów.
- Przeszukaj tablicę dwuwymiarową pętlami i sprawdź podzielność przez 3 i 5 za pomocą operatora % (liczba musi dawać resztę 0 dla obu).
- Zabezpiecz dane wejściowe za pomocą htmlspecialchars() przy pobieraniu, aby chronić przed XSS.
';
if ($areAllValuesValid && $isValidDimensions && $isCountValid) {
$values2d = array_chunk($values, $m);
$maxIndexes = array();
for ($i = 0; $i < $n; $i++) {
for ($j = 0; $j < $m; $j++) {
if ($values2d[$i][$j] % 3 == 0 && $values2d[$i][$j] % 5 == 0) {
$maxIndexes[] = array($i, $j);
}
}
}
echo "Wymiary tablicy: n = $n, m = $m
";
echo "Wprowadzone liczby: ";
echo implode(', ', $values);
echo "
Tablica $n x $m:";
echo '
';
for ($i = 0; $i < $n; $i++) {
echo '';
for ($j = 0; $j < $m; $j++) {
echo '| ' . $values2d[$i][$j] . ' | ';
}
echo '
';
}
echo '
';
echo "Indeksy liczb podzielnych przez 3 i 5:";
foreach ($maxIndexes as $index) {
echo "(" . $index[0] . ", " . $index[1] . ") ";
}
echo '
';
} else {
echo 'Dane wejściowe nie są poprawne! Sprawdź wymiary, liczbę wartości lub czy wszystkie są liczbami.';
}
echo '';
}
?>