Napisz program, który wypełnia liczbami tablicę o wymiarach n x n i oblicza sumę elementów nad główną przekątną. Główną przekątną kwadratowej tablicy rozumiemy jako łączącą lewy górny róg tablicy z prawym dolnym (czyli elementy [0][0], [1][1], ..., [n-1][n-1]). Użytkownik podaje n oraz wprowadza liczby do komponentu textarea oddzielone przecinkami. Program powinien zweryfikować, czy n jest liczbą całkowitą, czy podane wartości są liczbami, czy ich liczba zgadza się z n x n, a następnie wyświetlić tablicę i sumę elementów nad główną przekątną.
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.
- Oblicz sumę elementów nad główną przekątną, czyli tych, gdzie indeks kolumny j jest większy niż indeks wiersza i (j > i).
- Zabezpiecz dane wejściowe za pomocą htmlspecialchars() przy pobieraniu, aby chronić przed XSS.
';
if ($areAllValuesValid && $isValidDimensions && $isCountValid) {
$values2d = array_chunk($values, $n);
$diagonalSum = 0;
for ($i = 0; $i < $n; $i++) {
$diagonalSum += $values2d[$i][$i];
}
echo "Wymiar tablicy: n = $n
";
echo "Wprowadzone liczby: ";
echo implode(', ', $values);
echo "
Tablica $n x $n:";
echo '
';
for ($i = 0; $i < $n; $i++) {
echo '';
for ($j = 0; $j < $n; $j++) {
echo '| ' . $values2d[$i][$j] . ' | ';
}
echo '
';
}
echo '
';
echo "Suma elementów nad główną przekątną: $diagonalSum";
echo '
';
} else {
echo 'Dane wejściowe nie są poprawne! Sprawdź wymiary, liczbę wartości lub czy wszystkie są liczbami.';
}
echo '';
}
?>