diff --git a/Zadania/Z100 - suma nad przekątną/index.php b/Zadania/Z100 - suma nad przekątną/index.php
new file mode 100644
index 0000000..1019cdd
--- /dev/null
+++ b/Zadania/Z100 - suma nad przekątną/index.php
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+ Z100 - suma nad przekątną
+
+
+
+
+ Zadanie Z100
+ Autor: Jakub Grzegorczyk
+
+
+
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.
+
+
+
+
+
+ 0;
+
+ $n = (int)$nInput;
+
+ $values = array_map('trim', explode(',', $valuesInput));
+ $count = count($values);
+ $isCountValid = $count === $n*$n;
+
+ $areAllValuesValid = true;
+ foreach ($values as $value) {
+ if (!is_numeric($value)) { $areAllValuesValid = false; }
+ else { $value = (int)$value;}
+ }
+ echo '';
+ 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 '';
+}
+?>
+
+
diff --git a/Zadania/Z100 - suma nad przekątną/style.css b/Zadania/Z100 - suma nad przekątną/style.css
new file mode 100644
index 0000000..458b193
--- /dev/null
+++ b/Zadania/Z100 - suma nad przekątną/style.css
@@ -0,0 +1,300 @@
+/* === UNIVERSAL SCHOOL TEMPLATE CSS (BLACK & WHITE EDITION) === */
+/* clean, modern, and copy-paste friendly for all projects */
+
+/* === RESET === */
+* {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+
+/* === VARIABLES === */
+:root {
+ --accent: #000;
+ --border: #000;
+ --bg: #fff;
+ --bg-alt: #f7f7f7;
+ --text: #111;
+ --shadow: rgba(0, 0, 0, 0.15) 3px 3px 6px;
+ --radius: 1em;
+ --max-width: 1300px;
+}
+
+/* === PAGE === */
+body {
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Verdana, sans-serif;
+ background: linear-gradient(180deg, #ffffff 0%, #f5f5f5 100%);
+ color: var(--text);
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ min-height: 100vh;
+ line-height: 1.6;
+}
+
+/* === HEADER === */
+header {
+ border: 2px solid var(--border);
+ border-radius: var(--radius);
+ padding: 20px 30px;
+ box-shadow: var(--shadow);
+ background: var(--bg);
+ width: 95%;
+ max-width: var(--max-width);
+ text-align: center;
+ margin-top: 25px;
+ transition: box-shadow 0.3s ease, transform 0.2s ease;
+}
+
+header:hover {
+ box-shadow: rgba(0, 0, 0, 0.25) 4px 4px 10px;
+ transform: translateY(-2px);
+}
+
+header h1 {
+ font-size: 2.2rem;
+}
+
+header h2 {
+ margin-top: 0.5rem;
+ font-weight: 400;
+ font-size: 1.1rem;
+ color: #444;
+}
+
+/* === BOX === */
+.box {
+ border: 2px solid var(--border);
+ border-radius: var(--radius);
+ padding: 25px 35px;
+ margin-top: 25px;
+ background: var(--bg);
+ box-shadow: var(--shadow);
+ width: 95%;
+ max-width: var(--max-width);
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
+}
+
+.box:hover {
+ transform: translateY(-2px);
+ box-shadow: rgba(0, 0, 0, 0.25) 4px 4px 10px;
+}
+
+/* === TEXT ELEMENTS === */
+p {
+ margin-bottom: 1rem;
+}
+
+.box > p:last-child {
+ margin-bottom: 0;
+}
+
+h1, h2, h3, h4 {
+ margin-bottom: 0.5rem;
+ font-weight: 600;
+}
+
+a {
+ color: #000;
+ text-decoration: underline;
+ font-weight: 500;
+}
+
+a:hover {
+ opacity: 0.7;
+}
+
+/* === LISTS === */
+ul, ol {
+ margin: 1rem 0 1rem 1.5rem;
+}
+
+li {
+ margin-bottom: 0.4rem;
+}
+
+/* === TABLES === */
+table {
+ width: 100%;
+ border-collapse: collapse;
+ margin: 1rem 0;
+ background: var(--bg);
+ border: 2px solid var(--border);
+ border-radius: 0.6em;
+ overflow: hidden;
+ box-shadow: var(--shadow);
+}
+
+th, td {
+ padding: 10px 12px;
+ border-bottom: 1px solid #ccc;
+ text-align: center;
+}
+
+th {
+ background: var(--bg-alt);
+ font-weight: bold;
+ text-align: left;
+}
+
+tr:hover {
+ background: #f2f2f2;
+}
+
+/* === FORMS === */
+form {
+ display: flex;
+ flex-direction: column;
+ gap: 1.4rem;
+}
+
+.box:has(> form) {
+ padding: 35px 35px;
+}
+
+fieldset {
+ border: 2px solid var(--border);
+ border-radius: 0.8em;
+ padding: 1.2rem 1.5rem;
+ background: var(--bg-alt);
+}
+
+legend {
+ font-weight: bold;
+ color: #000;
+ padding: 0 0.4rem;
+ font-size: 1.05rem;
+}
+
+label {
+ font-weight: 500;
+}
+
+input[type="text"],
+input[type="email"],
+input[type="password"],
+input[type="number"],
+input[type="tel"],
+input[type="date"],
+textarea,
+select {
+ width: 100%;
+ font-size: 1rem;
+ margin-top: 6px;
+ margin-bottom: 8px;
+ border: 2px solid var(--border);
+ border-radius: 0.5em;
+ padding: 0.4rem 0.5rem;
+ transition: all 0.2s ease;
+ background: var(--bg);
+}
+
+textarea {
+ resize: vertical;
+ min-height: 100px;
+}
+
+input:focus,
+textarea:focus,
+select:focus {
+ outline: none;
+ border-color: #000;
+ box-shadow: 0 0 6px rgba(0, 0, 0, 0.4);
+ background: #f9f9f9;
+}
+
+input[type="radio"],
+input[type="checkbox"] {
+ accent-color: #000;
+ transform: scale(1.2);
+ margin-right: 0.3rem;
+}
+
+/* === BUTTONS === */
+button,
+input[type="submit"],
+input[type="button"],
+input[type="reset"] {
+ padding: 10px 20px;
+ border: 2px solid var(--border);
+ border-radius: 0.5em;
+ font-weight: bold;
+ font-size: 1rem;
+ background: linear-gradient(180deg, #fff 0%, #f2f2f2 100%);
+ cursor: pointer;
+ transition: all 0.2s ease;
+ align-self: flex-start;
+}
+
+button {
+ width: 100%;
+}
+
+button:hover,
+input[type="submit"]:hover,
+input[type="button"]:hover,
+input[type="reset"]:hover {
+ background: #eaeaea;
+ box-shadow: rgba(0, 0, 0, 0.25) 3px 3px 6px;
+ transform: translateY(-2px);
+}
+
+button:active,
+input[type="submit"]:active,
+input[type="button"]:active,
+input[type="reset"]:active {
+ transform: translateY(0);
+ box-shadow: rgba(0, 0, 0, 0.15) 1px 1px 3px;
+ background: #f7f7f7;
+}
+
+/* === HR, CODE, ETC. === */
+hr {
+ border: 0;
+ border-top: 2px solid var(--border);
+ margin: 1.5rem 0;
+}
+
+img {
+ max-width: 100%;
+ border-radius: 0.5em;
+}
+
+code, pre {
+ background: #f4f4f4;
+ border: 1px solid #ccc;
+ border-radius: 0.4em;
+ padding: 0.3em 0.5em;
+ font-family: "Courier New", monospace;
+}
+
+pre {
+ padding: 1em;
+ overflow-x: auto;
+}
+
+/* === RESPONSIVE === */
+@media (max-width: 900px) {
+ header, .box {
+ width: 95%;
+ padding: 20px;
+ }
+
+ button {
+ width: 100%;
+ }
+
+ textarea {
+ width: 100%;
+ }
+}
+
+@media (max-width: 600px) {
+ header h1 {
+ font-size: 1.7rem;
+ }
+
+ header h2 {
+ font-size: 0.95rem;
+ }
+}
diff --git a/Zadania/Z101 - tablica potęgowa/index.php b/Zadania/Z101 - tablica potęgowa/index.php
new file mode 100644
index 0000000..73260fb
--- /dev/null
+++ b/Zadania/Z101 - tablica potęgowa/index.php
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+ Z101 - tablica potęgowa
+
+
+
+
+ Zadanie Z101
+ Autor: Jakub Grzegorczyk
+
+
+
Napisz program, który wypełnia liczbami tablicę o wymiarach n x 3. W pierwszej kolumnie znajduje się liczba podana przez użytkownika, w drugiej jej druga potęga, a w trzeciej trzecia potęga. Użytkownik podaje n oraz wprowadza n liczb do pierwszej kolumny w komponencie textarea oddzielonych przecinkami. Program powinien zweryfikować, czy n jest liczbą całkowitą, czy podane wartości są liczbami, czy ich liczba zgadza się z n, a następnie wyświetlić tablicę z wyliczonymi potęgami.
+
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 drugą potęgę ($x * $x lub pow($x, 2)) i trzecią potęgę ($x * $x * $x lub pow($x, 3)) dla każdej liczby.
+ Zabezpiecz dane wejściowe za pomocą htmlspecialchars() przy pobieraniu, aby chronić przed XSS.
+
+
+
+
+
+ Wymiar tablicy
+ N:
+
+
+
+ Wartości tablicy (liczby oddzielone przecinkami):
+
+
+
+ Wyślij
+
+
+ 0;
+
+ $n = (int)$nInput;
+
+ $values = array_map('trim', explode(',', $valuesInput));
+ $count = count($values);
+ $isCountValid = $count === $n;
+
+ $areAllValuesValid = true;
+ foreach ($values as $value) {
+ if (!is_numeric($value)) { $areAllValuesValid = false; }
+ else { $value = (int)$value;}
+ }
+ echo '';
+ if ($areAllValuesValid && $isValidDimensions && $isCountValid) {
+ $values2d[$n] = array();
+ for ($i = 0; $i < $n; $i++) {
+ $values2d[$i][0] = $values[$i];
+ $values2d[$i][1] = pow($values[$i], 2);
+ $values2d[$i][2] = pow($values[$i], 3);
+ }
+ echo "Wymiar tablicy: n = $n
";
+ echo "Wprowadzone liczby: ";
+ echo implode(', ', $values);
+ echo "
Tablica $n x 3:";
+ echo '
';
+ for ($i = 0; $i < $n; $i++) {
+ echo '';
+ for ($j = 0; $j < 3; $j++) {
+ echo '' . $values2d[$i][$j] . ' ';
+ }
+ echo ' ';
+ }
+ echo '
';
+ echo '
';
+ } else {
+ echo 'Dane wejściowe nie są poprawne! Sprawdź wymiary, liczbę wartości lub czy wszystkie są liczbami.';
+ }
+ echo '';
+}
+?>
+
+
diff --git a/Zadania/Z101 - tablica potęgowa/style.css b/Zadania/Z101 - tablica potęgowa/style.css
new file mode 100644
index 0000000..458b193
--- /dev/null
+++ b/Zadania/Z101 - tablica potęgowa/style.css
@@ -0,0 +1,300 @@
+/* === UNIVERSAL SCHOOL TEMPLATE CSS (BLACK & WHITE EDITION) === */
+/* clean, modern, and copy-paste friendly for all projects */
+
+/* === RESET === */
+* {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+
+/* === VARIABLES === */
+:root {
+ --accent: #000;
+ --border: #000;
+ --bg: #fff;
+ --bg-alt: #f7f7f7;
+ --text: #111;
+ --shadow: rgba(0, 0, 0, 0.15) 3px 3px 6px;
+ --radius: 1em;
+ --max-width: 1300px;
+}
+
+/* === PAGE === */
+body {
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Verdana, sans-serif;
+ background: linear-gradient(180deg, #ffffff 0%, #f5f5f5 100%);
+ color: var(--text);
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ min-height: 100vh;
+ line-height: 1.6;
+}
+
+/* === HEADER === */
+header {
+ border: 2px solid var(--border);
+ border-radius: var(--radius);
+ padding: 20px 30px;
+ box-shadow: var(--shadow);
+ background: var(--bg);
+ width: 95%;
+ max-width: var(--max-width);
+ text-align: center;
+ margin-top: 25px;
+ transition: box-shadow 0.3s ease, transform 0.2s ease;
+}
+
+header:hover {
+ box-shadow: rgba(0, 0, 0, 0.25) 4px 4px 10px;
+ transform: translateY(-2px);
+}
+
+header h1 {
+ font-size: 2.2rem;
+}
+
+header h2 {
+ margin-top: 0.5rem;
+ font-weight: 400;
+ font-size: 1.1rem;
+ color: #444;
+}
+
+/* === BOX === */
+.box {
+ border: 2px solid var(--border);
+ border-radius: var(--radius);
+ padding: 25px 35px;
+ margin-top: 25px;
+ background: var(--bg);
+ box-shadow: var(--shadow);
+ width: 95%;
+ max-width: var(--max-width);
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
+}
+
+.box:hover {
+ transform: translateY(-2px);
+ box-shadow: rgba(0, 0, 0, 0.25) 4px 4px 10px;
+}
+
+/* === TEXT ELEMENTS === */
+p {
+ margin-bottom: 1rem;
+}
+
+.box > p:last-child {
+ margin-bottom: 0;
+}
+
+h1, h2, h3, h4 {
+ margin-bottom: 0.5rem;
+ font-weight: 600;
+}
+
+a {
+ color: #000;
+ text-decoration: underline;
+ font-weight: 500;
+}
+
+a:hover {
+ opacity: 0.7;
+}
+
+/* === LISTS === */
+ul, ol {
+ margin: 1rem 0 1rem 1.5rem;
+}
+
+li {
+ margin-bottom: 0.4rem;
+}
+
+/* === TABLES === */
+table {
+ width: 100%;
+ border-collapse: collapse;
+ margin: 1rem 0;
+ background: var(--bg);
+ border: 2px solid var(--border);
+ border-radius: 0.6em;
+ overflow: hidden;
+ box-shadow: var(--shadow);
+}
+
+th, td {
+ padding: 10px 12px;
+ border-bottom: 1px solid #ccc;
+ text-align: center;
+}
+
+th {
+ background: var(--bg-alt);
+ font-weight: bold;
+ text-align: left;
+}
+
+tr:hover {
+ background: #f2f2f2;
+}
+
+/* === FORMS === */
+form {
+ display: flex;
+ flex-direction: column;
+ gap: 1.4rem;
+}
+
+.box:has(> form) {
+ padding: 35px 35px;
+}
+
+fieldset {
+ border: 2px solid var(--border);
+ border-radius: 0.8em;
+ padding: 1.2rem 1.5rem;
+ background: var(--bg-alt);
+}
+
+legend {
+ font-weight: bold;
+ color: #000;
+ padding: 0 0.4rem;
+ font-size: 1.05rem;
+}
+
+label {
+ font-weight: 500;
+}
+
+input[type="text"],
+input[type="email"],
+input[type="password"],
+input[type="number"],
+input[type="tel"],
+input[type="date"],
+textarea,
+select {
+ width: 100%;
+ font-size: 1rem;
+ margin-top: 6px;
+ margin-bottom: 8px;
+ border: 2px solid var(--border);
+ border-radius: 0.5em;
+ padding: 0.4rem 0.5rem;
+ transition: all 0.2s ease;
+ background: var(--bg);
+}
+
+textarea {
+ resize: vertical;
+ min-height: 100px;
+}
+
+input:focus,
+textarea:focus,
+select:focus {
+ outline: none;
+ border-color: #000;
+ box-shadow: 0 0 6px rgba(0, 0, 0, 0.4);
+ background: #f9f9f9;
+}
+
+input[type="radio"],
+input[type="checkbox"] {
+ accent-color: #000;
+ transform: scale(1.2);
+ margin-right: 0.3rem;
+}
+
+/* === BUTTONS === */
+button,
+input[type="submit"],
+input[type="button"],
+input[type="reset"] {
+ padding: 10px 20px;
+ border: 2px solid var(--border);
+ border-radius: 0.5em;
+ font-weight: bold;
+ font-size: 1rem;
+ background: linear-gradient(180deg, #fff 0%, #f2f2f2 100%);
+ cursor: pointer;
+ transition: all 0.2s ease;
+ align-self: flex-start;
+}
+
+button {
+ width: 100%;
+}
+
+button:hover,
+input[type="submit"]:hover,
+input[type="button"]:hover,
+input[type="reset"]:hover {
+ background: #eaeaea;
+ box-shadow: rgba(0, 0, 0, 0.25) 3px 3px 6px;
+ transform: translateY(-2px);
+}
+
+button:active,
+input[type="submit"]:active,
+input[type="button"]:active,
+input[type="reset"]:active {
+ transform: translateY(0);
+ box-shadow: rgba(0, 0, 0, 0.15) 1px 1px 3px;
+ background: #f7f7f7;
+}
+
+/* === HR, CODE, ETC. === */
+hr {
+ border: 0;
+ border-top: 2px solid var(--border);
+ margin: 1.5rem 0;
+}
+
+img {
+ max-width: 100%;
+ border-radius: 0.5em;
+}
+
+code, pre {
+ background: #f4f4f4;
+ border: 1px solid #ccc;
+ border-radius: 0.4em;
+ padding: 0.3em 0.5em;
+ font-family: "Courier New", monospace;
+}
+
+pre {
+ padding: 1em;
+ overflow-x: auto;
+}
+
+/* === RESPONSIVE === */
+@media (max-width: 900px) {
+ header, .box {
+ width: 95%;
+ padding: 20px;
+ }
+
+ button {
+ width: 100%;
+ }
+
+ textarea {
+ width: 100%;
+ }
+}
+
+@media (max-width: 600px) {
+ header h1 {
+ font-size: 1.7rem;
+ }
+
+ header h2 {
+ font-size: 0.95rem;
+ }
+}
diff --git a/Zadania/Z102 - lewy górny/index.php b/Zadania/Z102 - lewy górny/index.php
new file mode 100644
index 0000000..58c1546
--- /dev/null
+++ b/Zadania/Z102 - lewy górny/index.php
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+ Z102 - lewy górny
+
+
+
+
+ Zadanie Z102
+ Autor: Jakub Grzegorczyk
+
+
+
Napisz program, który do dwuwymiarowej tablicy o wymiarach 3 x 3 wpisuje liczby pseudolosowe z zakresu <0,9>, wyświetla tą tablicę, a następnie oblicza sumę liczb rozmieszczonych wzdłuż przekątnych:
+
+ Przekątna LG_PD - lewy górny i prawy dolny,
+ Przekątna LD_PG - lewy dolny i prawy górny.
+
+
Program wyświetla te sumy i odpowiada na pytanie, która z nich jest większa, lub czy są równe.
+
+
+
+ Rozwiąż
+
+
+';
+ echo "Tablica 3 x 3:";
+ echo '';
+ for ($i = 0; $i < 3; $i++) {
+ echo '';
+ for ($j = 0; $j < 3; $j++) {
+ echo '' . $values[$i][$j] . ' ';
+ }
+ echo ' ';
+ }
+ echo '
';
+ echo "LG_PD : " . $sumLG_PD . ' ';
+ echo "LD_PG : " . $sumLD_PG . ' ';
+ echo ' ';
+ if ($sumLD_PG > $sumLG_PD) {
+ echo "LG_PD < LD_PG";
+ } else if ($sumLD_PG == $sumLG_PD) {
+ echo "LG_PD = LD_PG";
+ } else {
+ echo "LG_PD > LD_PG";
+ }
+ echo '';
+}
+?>
+
+
diff --git a/Zadania/Z102 - lewy górny/style.css b/Zadania/Z102 - lewy górny/style.css
new file mode 100644
index 0000000..458b193
--- /dev/null
+++ b/Zadania/Z102 - lewy górny/style.css
@@ -0,0 +1,300 @@
+/* === UNIVERSAL SCHOOL TEMPLATE CSS (BLACK & WHITE EDITION) === */
+/* clean, modern, and copy-paste friendly for all projects */
+
+/* === RESET === */
+* {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+
+/* === VARIABLES === */
+:root {
+ --accent: #000;
+ --border: #000;
+ --bg: #fff;
+ --bg-alt: #f7f7f7;
+ --text: #111;
+ --shadow: rgba(0, 0, 0, 0.15) 3px 3px 6px;
+ --radius: 1em;
+ --max-width: 1300px;
+}
+
+/* === PAGE === */
+body {
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Verdana, sans-serif;
+ background: linear-gradient(180deg, #ffffff 0%, #f5f5f5 100%);
+ color: var(--text);
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ min-height: 100vh;
+ line-height: 1.6;
+}
+
+/* === HEADER === */
+header {
+ border: 2px solid var(--border);
+ border-radius: var(--radius);
+ padding: 20px 30px;
+ box-shadow: var(--shadow);
+ background: var(--bg);
+ width: 95%;
+ max-width: var(--max-width);
+ text-align: center;
+ margin-top: 25px;
+ transition: box-shadow 0.3s ease, transform 0.2s ease;
+}
+
+header:hover {
+ box-shadow: rgba(0, 0, 0, 0.25) 4px 4px 10px;
+ transform: translateY(-2px);
+}
+
+header h1 {
+ font-size: 2.2rem;
+}
+
+header h2 {
+ margin-top: 0.5rem;
+ font-weight: 400;
+ font-size: 1.1rem;
+ color: #444;
+}
+
+/* === BOX === */
+.box {
+ border: 2px solid var(--border);
+ border-radius: var(--radius);
+ padding: 25px 35px;
+ margin-top: 25px;
+ background: var(--bg);
+ box-shadow: var(--shadow);
+ width: 95%;
+ max-width: var(--max-width);
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
+}
+
+.box:hover {
+ transform: translateY(-2px);
+ box-shadow: rgba(0, 0, 0, 0.25) 4px 4px 10px;
+}
+
+/* === TEXT ELEMENTS === */
+p {
+ margin-bottom: 1rem;
+}
+
+.box > p:last-child {
+ margin-bottom: 0;
+}
+
+h1, h2, h3, h4 {
+ margin-bottom: 0.5rem;
+ font-weight: 600;
+}
+
+a {
+ color: #000;
+ text-decoration: underline;
+ font-weight: 500;
+}
+
+a:hover {
+ opacity: 0.7;
+}
+
+/* === LISTS === */
+ul, ol {
+ margin: 1rem 0 1rem 1.5rem;
+}
+
+li {
+ margin-bottom: 0.4rem;
+}
+
+/* === TABLES === */
+table {
+ width: 100%;
+ border-collapse: collapse;
+ margin: 1rem 0;
+ background: var(--bg);
+ border: 2px solid var(--border);
+ border-radius: 0.6em;
+ overflow: hidden;
+ box-shadow: var(--shadow);
+}
+
+th, td {
+ padding: 10px 12px;
+ border-bottom: 1px solid #ccc;
+ text-align: center;
+}
+
+th {
+ background: var(--bg-alt);
+ font-weight: bold;
+ text-align: left;
+}
+
+tr:hover {
+ background: #f2f2f2;
+}
+
+/* === FORMS === */
+form {
+ display: flex;
+ flex-direction: column;
+ gap: 1.4rem;
+}
+
+.box:has(> form) {
+ padding: 35px 35px;
+}
+
+fieldset {
+ border: 2px solid var(--border);
+ border-radius: 0.8em;
+ padding: 1.2rem 1.5rem;
+ background: var(--bg-alt);
+}
+
+legend {
+ font-weight: bold;
+ color: #000;
+ padding: 0 0.4rem;
+ font-size: 1.05rem;
+}
+
+label {
+ font-weight: 500;
+}
+
+input[type="text"],
+input[type="email"],
+input[type="password"],
+input[type="number"],
+input[type="tel"],
+input[type="date"],
+textarea,
+select {
+ width: 100%;
+ font-size: 1rem;
+ margin-top: 6px;
+ margin-bottom: 8px;
+ border: 2px solid var(--border);
+ border-radius: 0.5em;
+ padding: 0.4rem 0.5rem;
+ transition: all 0.2s ease;
+ background: var(--bg);
+}
+
+textarea {
+ resize: vertical;
+ min-height: 100px;
+}
+
+input:focus,
+textarea:focus,
+select:focus {
+ outline: none;
+ border-color: #000;
+ box-shadow: 0 0 6px rgba(0, 0, 0, 0.4);
+ background: #f9f9f9;
+}
+
+input[type="radio"],
+input[type="checkbox"] {
+ accent-color: #000;
+ transform: scale(1.2);
+ margin-right: 0.3rem;
+}
+
+/* === BUTTONS === */
+button,
+input[type="submit"],
+input[type="button"],
+input[type="reset"] {
+ padding: 10px 20px;
+ border: 2px solid var(--border);
+ border-radius: 0.5em;
+ font-weight: bold;
+ font-size: 1rem;
+ background: linear-gradient(180deg, #fff 0%, #f2f2f2 100%);
+ cursor: pointer;
+ transition: all 0.2s ease;
+ align-self: flex-start;
+}
+
+button {
+ width: 100%;
+}
+
+button:hover,
+input[type="submit"]:hover,
+input[type="button"]:hover,
+input[type="reset"]:hover {
+ background: #eaeaea;
+ box-shadow: rgba(0, 0, 0, 0.25) 3px 3px 6px;
+ transform: translateY(-2px);
+}
+
+button:active,
+input[type="submit"]:active,
+input[type="button"]:active,
+input[type="reset"]:active {
+ transform: translateY(0);
+ box-shadow: rgba(0, 0, 0, 0.15) 1px 1px 3px;
+ background: #f7f7f7;
+}
+
+/* === HR, CODE, ETC. === */
+hr {
+ border: 0;
+ border-top: 2px solid var(--border);
+ margin: 1.5rem 0;
+}
+
+img {
+ max-width: 100%;
+ border-radius: 0.5em;
+}
+
+code, pre {
+ background: #f4f4f4;
+ border: 1px solid #ccc;
+ border-radius: 0.4em;
+ padding: 0.3em 0.5em;
+ font-family: "Courier New", monospace;
+}
+
+pre {
+ padding: 1em;
+ overflow-x: auto;
+}
+
+/* === RESPONSIVE === */
+@media (max-width: 900px) {
+ header, .box {
+ width: 95%;
+ padding: 20px;
+ }
+
+ button {
+ width: 100%;
+ }
+
+ textarea {
+ width: 100%;
+ }
+}
+
+@media (max-width: 600px) {
+ header h1 {
+ font-size: 1.7rem;
+ }
+
+ header h2 {
+ font-size: 0.95rem;
+ }
+}
diff --git a/Zadania/Z103 - tablica znaków/index.php b/Zadania/Z103 - tablica znaków/index.php
new file mode 100644
index 0000000..ee56714
--- /dev/null
+++ b/Zadania/Z103 - tablica znaków/index.php
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+ Z103 - tablica znaków
+
+
+
+
+ Zadanie Z103
+ Autor: Jakub Grzegorczyk
+
+
+
Napisz program, który do dwuwymiarowej tablicy o wymiarach 7 x 7 wpisze wygenerowane losowo znaki w zakresie <'a','e'>, wyświetli tę tablicę, a następnie:
+
+ wypisze ile razy w tablicy wystąpiła litera 'a',
+ wyświetli te numery wierszy, w których najczęściej wystąpiła litera 'b'.
+
+
Program wyświetla te sumy i odpowiada na pytanie, która z nich jest większa, lub czy są równe.
+
+
+
+ Rozwiąż
+
+
+ $row) {
+ $rowCounts[$i] = 0;
+ foreach ($row as $value) {
+ if ($value == 'b') {
+ $rowCounts[$i]++;
+ }
+ if ($value == 'a') {
+ $countA++;
+ }
+ }
+ }
+ $maxCount = max($rowCounts);
+ $rowsWithMax = array_keys($rowCounts, $maxCount);
+ echo '';
+ echo "Tablica 7 x 7:";
+ echo '
';
+ for ($i = 0; $i < 7; $i++) {
+ echo '';
+ for ($j = 0; $j < 7; $j++) {
+ echo '' . $values[$i][$j] . ' ';
+ }
+ echo ' ';
+ }
+ echo '
';
+ echo "Litera 'a' wystąpiła
$countA razy.
";
+ echo "Najwięcej liter 'b' wystąpiło w wierszu/wierszach: ";
+ foreach($rowsWithMax as $rowIndex) {echo $rowIndex + 1; if($rowIndex != end($rowsWithMax)) {echo ', ';}}
+ echo " ($maxCount razy)" . '
';
+ echo '
';
+}
+?>
+
+
diff --git a/Zadania/Z103 - tablica znaków/style.css b/Zadania/Z103 - tablica znaków/style.css
new file mode 100644
index 0000000..458b193
--- /dev/null
+++ b/Zadania/Z103 - tablica znaków/style.css
@@ -0,0 +1,300 @@
+/* === UNIVERSAL SCHOOL TEMPLATE CSS (BLACK & WHITE EDITION) === */
+/* clean, modern, and copy-paste friendly for all projects */
+
+/* === RESET === */
+* {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+
+/* === VARIABLES === */
+:root {
+ --accent: #000;
+ --border: #000;
+ --bg: #fff;
+ --bg-alt: #f7f7f7;
+ --text: #111;
+ --shadow: rgba(0, 0, 0, 0.15) 3px 3px 6px;
+ --radius: 1em;
+ --max-width: 1300px;
+}
+
+/* === PAGE === */
+body {
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Verdana, sans-serif;
+ background: linear-gradient(180deg, #ffffff 0%, #f5f5f5 100%);
+ color: var(--text);
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ min-height: 100vh;
+ line-height: 1.6;
+}
+
+/* === HEADER === */
+header {
+ border: 2px solid var(--border);
+ border-radius: var(--radius);
+ padding: 20px 30px;
+ box-shadow: var(--shadow);
+ background: var(--bg);
+ width: 95%;
+ max-width: var(--max-width);
+ text-align: center;
+ margin-top: 25px;
+ transition: box-shadow 0.3s ease, transform 0.2s ease;
+}
+
+header:hover {
+ box-shadow: rgba(0, 0, 0, 0.25) 4px 4px 10px;
+ transform: translateY(-2px);
+}
+
+header h1 {
+ font-size: 2.2rem;
+}
+
+header h2 {
+ margin-top: 0.5rem;
+ font-weight: 400;
+ font-size: 1.1rem;
+ color: #444;
+}
+
+/* === BOX === */
+.box {
+ border: 2px solid var(--border);
+ border-radius: var(--radius);
+ padding: 25px 35px;
+ margin-top: 25px;
+ background: var(--bg);
+ box-shadow: var(--shadow);
+ width: 95%;
+ max-width: var(--max-width);
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
+}
+
+.box:hover {
+ transform: translateY(-2px);
+ box-shadow: rgba(0, 0, 0, 0.25) 4px 4px 10px;
+}
+
+/* === TEXT ELEMENTS === */
+p {
+ margin-bottom: 1rem;
+}
+
+.box > p:last-child {
+ margin-bottom: 0;
+}
+
+h1, h2, h3, h4 {
+ margin-bottom: 0.5rem;
+ font-weight: 600;
+}
+
+a {
+ color: #000;
+ text-decoration: underline;
+ font-weight: 500;
+}
+
+a:hover {
+ opacity: 0.7;
+}
+
+/* === LISTS === */
+ul, ol {
+ margin: 1rem 0 1rem 1.5rem;
+}
+
+li {
+ margin-bottom: 0.4rem;
+}
+
+/* === TABLES === */
+table {
+ width: 100%;
+ border-collapse: collapse;
+ margin: 1rem 0;
+ background: var(--bg);
+ border: 2px solid var(--border);
+ border-radius: 0.6em;
+ overflow: hidden;
+ box-shadow: var(--shadow);
+}
+
+th, td {
+ padding: 10px 12px;
+ border-bottom: 1px solid #ccc;
+ text-align: center;
+}
+
+th {
+ background: var(--bg-alt);
+ font-weight: bold;
+ text-align: left;
+}
+
+tr:hover {
+ background: #f2f2f2;
+}
+
+/* === FORMS === */
+form {
+ display: flex;
+ flex-direction: column;
+ gap: 1.4rem;
+}
+
+.box:has(> form) {
+ padding: 35px 35px;
+}
+
+fieldset {
+ border: 2px solid var(--border);
+ border-radius: 0.8em;
+ padding: 1.2rem 1.5rem;
+ background: var(--bg-alt);
+}
+
+legend {
+ font-weight: bold;
+ color: #000;
+ padding: 0 0.4rem;
+ font-size: 1.05rem;
+}
+
+label {
+ font-weight: 500;
+}
+
+input[type="text"],
+input[type="email"],
+input[type="password"],
+input[type="number"],
+input[type="tel"],
+input[type="date"],
+textarea,
+select {
+ width: 100%;
+ font-size: 1rem;
+ margin-top: 6px;
+ margin-bottom: 8px;
+ border: 2px solid var(--border);
+ border-radius: 0.5em;
+ padding: 0.4rem 0.5rem;
+ transition: all 0.2s ease;
+ background: var(--bg);
+}
+
+textarea {
+ resize: vertical;
+ min-height: 100px;
+}
+
+input:focus,
+textarea:focus,
+select:focus {
+ outline: none;
+ border-color: #000;
+ box-shadow: 0 0 6px rgba(0, 0, 0, 0.4);
+ background: #f9f9f9;
+}
+
+input[type="radio"],
+input[type="checkbox"] {
+ accent-color: #000;
+ transform: scale(1.2);
+ margin-right: 0.3rem;
+}
+
+/* === BUTTONS === */
+button,
+input[type="submit"],
+input[type="button"],
+input[type="reset"] {
+ padding: 10px 20px;
+ border: 2px solid var(--border);
+ border-radius: 0.5em;
+ font-weight: bold;
+ font-size: 1rem;
+ background: linear-gradient(180deg, #fff 0%, #f2f2f2 100%);
+ cursor: pointer;
+ transition: all 0.2s ease;
+ align-self: flex-start;
+}
+
+button {
+ width: 100%;
+}
+
+button:hover,
+input[type="submit"]:hover,
+input[type="button"]:hover,
+input[type="reset"]:hover {
+ background: #eaeaea;
+ box-shadow: rgba(0, 0, 0, 0.25) 3px 3px 6px;
+ transform: translateY(-2px);
+}
+
+button:active,
+input[type="submit"]:active,
+input[type="button"]:active,
+input[type="reset"]:active {
+ transform: translateY(0);
+ box-shadow: rgba(0, 0, 0, 0.15) 1px 1px 3px;
+ background: #f7f7f7;
+}
+
+/* === HR, CODE, ETC. === */
+hr {
+ border: 0;
+ border-top: 2px solid var(--border);
+ margin: 1.5rem 0;
+}
+
+img {
+ max-width: 100%;
+ border-radius: 0.5em;
+}
+
+code, pre {
+ background: #f4f4f4;
+ border: 1px solid #ccc;
+ border-radius: 0.4em;
+ padding: 0.3em 0.5em;
+ font-family: "Courier New", monospace;
+}
+
+pre {
+ padding: 1em;
+ overflow-x: auto;
+}
+
+/* === RESPONSIVE === */
+@media (max-width: 900px) {
+ header, .box {
+ width: 95%;
+ padding: 20px;
+ }
+
+ button {
+ width: 100%;
+ }
+
+ textarea {
+ width: 100%;
+ }
+}
+
+@media (max-width: 600px) {
+ header h1 {
+ font-size: 1.7rem;
+ }
+
+ header h2 {
+ font-size: 0.95rem;
+ }
+}
diff --git a/Zadania/Z34 - Proste równoległe/index.php b/Zadania/Z34 - Proste równoległe/index.php
new file mode 100644
index 0000000..a60db04
--- /dev/null
+++ b/Zadania/Z34 - Proste równoległe/index.php
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+ Z34 - Proste równoległe
+
+
+
+
+ Zadanie Z34
+ Autor: Jakub Grzegorczyk
+
+
+
Napisz program, który dla podanych dwóch równań prostych odpowie czy proste te są równoległe.
+
+
+
+
+
+ Dane dla pierwszej prostej y1 = a1 x + b1
+ Input 1
+
+ Input 2
+
+
+
+ Dane dla drugiej prostej y2 = a2 x + b2
+ Input 1
+
+ Input 2
+
+
+ Wyślij
+
+
+
+
+
diff --git a/Zadania/Z34 - Proste równoległe/style.css b/Zadania/Z34 - Proste równoległe/style.css
new file mode 100644
index 0000000..125c287
--- /dev/null
+++ b/Zadania/Z34 - Proste równoległe/style.css
@@ -0,0 +1,300 @@
+
+/* === UNIVERSAL SCHOOL TEMPLATE CSS (BLACK & WHITE EDITION) === */
+/* clean, modern, and copy-paste friendly for all projects */
+
+/* === RESET === */
+* {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+
+/* === VARIABLES === */
+:root {
+ --accent: #000;
+ --border: #000;
+ --bg: #fff;
+ --bg-alt: #f7f7f7;
+ --text: #111;
+ --shadow: rgba(0, 0, 0, 0.15) 3px 3px 6px;
+ --radius: 1em;
+ --max-width: 1300px;
+}
+
+/* === PAGE === */
+body {
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Verdana, sans-serif;
+ background: linear-gradient(180deg, #ffffff 0%, #f5f5f5 100%);
+ color: var(--text);
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ min-height: 100vh;
+ line-height: 1.6;
+}
+
+/* === HEADER === */
+header {
+ border: 2px solid var(--border);
+ border-radius: var(--radius);
+ padding: 20px 30px;
+ box-shadow: var(--shadow);
+ background: var(--bg);
+ width: 95%;
+ max-width: var(--max-width);
+ text-align: center;
+ margin-top: 25px;
+ transition: box-shadow 0.3s ease, transform 0.2s ease;
+}
+
+header:hover {
+ box-shadow: rgba(0, 0, 0, 0.25) 4px 4px 10px;
+ transform: translateY(-2px);
+}
+
+header h1 {
+ font-size: 2.2rem;
+}
+
+header h2 {
+ margin-top: 0.5rem;
+ font-weight: 400;
+ font-size: 1.1rem;
+ color: #444;
+}
+
+/* === BOX === */
+.box {
+ border: 2px solid var(--border);
+ border-radius: var(--radius);
+ padding: 25px 35px;
+ margin-top: 25px;
+ background: var(--bg);
+ box-shadow: var(--shadow);
+ width: 95%;
+ max-width: var(--max-width);
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
+}
+
+.box:hover {
+ transform: translateY(-2px);
+ box-shadow: rgba(0, 0, 0, 0.25) 4px 4px 10px;
+}
+
+/* === TEXT ELEMENTS === */
+p {
+ margin-bottom: 1rem;
+}
+
+.box > p:last-child {
+ margin-bottom: 0;
+}
+
+h1, h2, h3, h4 {
+ margin-bottom: 0.5rem;
+ font-weight: 600;
+}
+
+a {
+ color: #000;
+ text-decoration: underline;
+ font-weight: 500;
+}
+
+a:hover {
+ opacity: 0.7;
+}
+
+/* === LISTS === */
+ul, ol {
+ margin: 1rem 0 1rem 1.5rem;
+}
+
+li {
+ margin-bottom: 0.4rem;
+}
+
+/* === TABLES === */
+table {
+ width: 100%;
+ border-collapse: collapse;
+ margin: 1rem 0;
+ background: var(--bg);
+ border: 2px solid var(--border);
+ border-radius: 0.6em;
+ overflow: hidden;
+ box-shadow: var(--shadow);
+}
+
+th, td {
+ padding: 10px 12px;
+ border-bottom: 1px solid #ccc;
+}
+
+th {
+ background: var(--bg-alt);
+ font-weight: bold;
+ text-align: left;
+}
+
+tr:hover {
+ background: #f2f2f2;
+}
+
+/* === FORMS === */
+form {
+ display: flex;
+ flex-direction: column;
+ gap: 1.4rem;
+}
+
+.box:has(> form) {
+ padding: 35px 35px;
+}
+
+fieldset {
+ border: 2px solid var(--border);
+ border-radius: 0.8em;
+ padding: 1.2rem 1.5rem;
+ background: var(--bg-alt);
+}
+
+legend {
+ font-weight: bold;
+ color: #000;
+ padding: 0 0.4rem;
+ font-size: 1.05rem;
+}
+
+label {
+ font-weight: 500;
+}
+
+input[type="text"],
+input[type="email"],
+input[type="password"],
+input[type="number"],
+input[type="tel"],
+input[type="date"],
+textarea,
+select {
+ width: 100%;
+ font-size: 1rem;
+ margin-top: 6px;
+ margin-bottom: 8px;
+ border: 2px solid var(--border);
+ border-radius: 0.5em;
+ padding: 0.4rem 0.5rem;
+ transition: all 0.2s ease;
+ background: var(--bg);
+}
+
+textarea {
+ resize: vertical;
+ min-height: 100px;
+}
+
+input:focus,
+textarea:focus,
+select:focus {
+ outline: none;
+ border-color: #000;
+ box-shadow: 0 0 6px rgba(0, 0, 0, 0.4);
+ background: #f9f9f9;
+}
+
+input[type="radio"],
+input[type="checkbox"] {
+ accent-color: #000;
+ transform: scale(1.2);
+ margin-right: 0.3rem;
+}
+
+/* === BUTTONS === */
+button,
+input[type="submit"],
+input[type="button"],
+input[type="reset"] {
+ padding: 10px 20px;
+ border: 2px solid var(--border);
+ border-radius: 0.5em;
+ font-weight: bold;
+ font-size: 1rem;
+ background: linear-gradient(180deg, #fff 0%, #f2f2f2 100%);
+ cursor: pointer;
+ transition: all 0.2s ease;
+ align-self: flex-start;
+}
+
+button {
+ width: 100%;
+}
+
+button:hover,
+input[type="submit"]:hover,
+input[type="button"]:hover,
+input[type="reset"]:hover {
+ background: #eaeaea;
+ box-shadow: rgba(0, 0, 0, 0.25) 3px 3px 6px;
+ transform: translateY(-2px);
+}
+
+button:active,
+input[type="submit"]:active,
+input[type="button"]:active,
+input[type="reset"]:active {
+ transform: translateY(0);
+ box-shadow: rgba(0, 0, 0, 0.15) 1px 1px 3px;
+ background: #f7f7f7;
+}
+
+/* === HR, CODE, ETC. === */
+hr {
+ border: 0;
+ border-top: 2px solid var(--border);
+ margin: 1.5rem 0;
+}
+
+img {
+ max-width: 100%;
+ border-radius: 0.5em;
+}
+
+code, pre {
+ background: #f4f4f4;
+ border: 1px solid #ccc;
+ border-radius: 0.4em;
+ padding: 0.3em 0.5em;
+ font-family: "Courier New", monospace;
+}
+
+pre {
+ padding: 1em;
+ overflow-x: auto;
+}
+
+/* === RESPONSIVE === */
+@media (max-width: 900px) {
+ header, .box {
+ width: 95%;
+ padding: 20px;
+ }
+
+ button {
+ width: 100%;
+ }
+
+ textarea {
+ width: 100%;
+ }
+}
+
+@media (max-width: 600px) {
+ header h1 {
+ font-size: 1.7rem;
+ }
+
+ header h2 {
+ font-size: 0.95rem;
+ }
+}
diff --git a/Zadania/Z97 - suma w wierszu tablicy/index.php b/Zadania/Z97 - suma w wierszu tablicy/index.php
index 709d019..8079307 100644
--- a/Zadania/Z97 - suma w wierszu tablicy/index.php
+++ b/Zadania/Z97 - suma w wierszu tablicy/index.php
@@ -68,12 +68,9 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$isCountValid = $count === ($n*$m);
$areAllValuesValid = true;
- for ($i = 0; $i < $count; $i++) {
- if (!is_numeric($values[$i])) {
- $areAllValuesValid = false;
- } else {
- $values[$i] = (int)$values[$i];
- }
+ foreach ($values as $value) {
+ if (!is_numeric($value)) { $areAllValuesValid = false; }
+ else { $value = (int)$value;}
}
echo '';
if ($areAllValuesValid && $isValidDimensions && $isCountValid && $isRowNumValid) {
diff --git a/Zadania/Z98 - indeksy parzystych/index.php b/Zadania/Z98 - indeksy parzystych/index.php
new file mode 100644
index 0000000..a0aedb9
--- /dev/null
+++ b/Zadania/Z98 - indeksy parzystych/index.php
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
Z98 - indeksy parzystych
+
+
+
+
+ Zadanie Z98
+ Autor: Jakub Grzegorczyk
+
+
+
Napisz program, który wczytuje liczby całkowite do tablicy o wymiarach n x m i wyświetla wskaźniki liczb parzystych w tablicy. 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 parzystych.
+
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ź parzystość za pomocą operatora % (modulo).
+ Zabezpiecz dane wejściowe za pomocą htmlspecialchars() przy pobieraniu, aby chronić przed XSS.
+
+
+
+
+
+ Wymiary tablicy
+ Liczba wierszy (n):
+
+ Liczba kolumn (m):
+
+
+
+ Wartości tablicy (liczby całkowite oddzielone przecinkami):
+
+
+
+ Wyślij
+
+
+ 0 &&
+ (int)$mInput > 0;
+
+ $n = (int)$nInput;
+ $m = (int)$mInput;
+
+ $values = array_map('trim', explode(',', $valuesInput));
+ $count = count($values);
+ $isCountValid = $count === ($n*$m);
+
+ $areAllValuesValid = true;
+ foreach ($values as $value) {
+ if (!is_numeric($value)) { $areAllValuesValid = false; }
+ else { $value = (int)$value;}
+ }
+ echo '
';
+ 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] % 2 == 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 parzystych:";
+ 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 '
';
+}
+?>
+
+
diff --git a/Zadania/Z98 - indeksy parzystych/style.css b/Zadania/Z98 - indeksy parzystych/style.css
new file mode 100644
index 0000000..458b193
--- /dev/null
+++ b/Zadania/Z98 - indeksy parzystych/style.css
@@ -0,0 +1,300 @@
+/* === UNIVERSAL SCHOOL TEMPLATE CSS (BLACK & WHITE EDITION) === */
+/* clean, modern, and copy-paste friendly for all projects */
+
+/* === RESET === */
+* {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+
+/* === VARIABLES === */
+:root {
+ --accent: #000;
+ --border: #000;
+ --bg: #fff;
+ --bg-alt: #f7f7f7;
+ --text: #111;
+ --shadow: rgba(0, 0, 0, 0.15) 3px 3px 6px;
+ --radius: 1em;
+ --max-width: 1300px;
+}
+
+/* === PAGE === */
+body {
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Verdana, sans-serif;
+ background: linear-gradient(180deg, #ffffff 0%, #f5f5f5 100%);
+ color: var(--text);
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ min-height: 100vh;
+ line-height: 1.6;
+}
+
+/* === HEADER === */
+header {
+ border: 2px solid var(--border);
+ border-radius: var(--radius);
+ padding: 20px 30px;
+ box-shadow: var(--shadow);
+ background: var(--bg);
+ width: 95%;
+ max-width: var(--max-width);
+ text-align: center;
+ margin-top: 25px;
+ transition: box-shadow 0.3s ease, transform 0.2s ease;
+}
+
+header:hover {
+ box-shadow: rgba(0, 0, 0, 0.25) 4px 4px 10px;
+ transform: translateY(-2px);
+}
+
+header h1 {
+ font-size: 2.2rem;
+}
+
+header h2 {
+ margin-top: 0.5rem;
+ font-weight: 400;
+ font-size: 1.1rem;
+ color: #444;
+}
+
+/* === BOX === */
+.box {
+ border: 2px solid var(--border);
+ border-radius: var(--radius);
+ padding: 25px 35px;
+ margin-top: 25px;
+ background: var(--bg);
+ box-shadow: var(--shadow);
+ width: 95%;
+ max-width: var(--max-width);
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
+}
+
+.box:hover {
+ transform: translateY(-2px);
+ box-shadow: rgba(0, 0, 0, 0.25) 4px 4px 10px;
+}
+
+/* === TEXT ELEMENTS === */
+p {
+ margin-bottom: 1rem;
+}
+
+.box > p:last-child {
+ margin-bottom: 0;
+}
+
+h1, h2, h3, h4 {
+ margin-bottom: 0.5rem;
+ font-weight: 600;
+}
+
+a {
+ color: #000;
+ text-decoration: underline;
+ font-weight: 500;
+}
+
+a:hover {
+ opacity: 0.7;
+}
+
+/* === LISTS === */
+ul, ol {
+ margin: 1rem 0 1rem 1.5rem;
+}
+
+li {
+ margin-bottom: 0.4rem;
+}
+
+/* === TABLES === */
+table {
+ width: 100%;
+ border-collapse: collapse;
+ margin: 1rem 0;
+ background: var(--bg);
+ border: 2px solid var(--border);
+ border-radius: 0.6em;
+ overflow: hidden;
+ box-shadow: var(--shadow);
+}
+
+th, td {
+ padding: 10px 12px;
+ border-bottom: 1px solid #ccc;
+ text-align: center;
+}
+
+th {
+ background: var(--bg-alt);
+ font-weight: bold;
+ text-align: left;
+}
+
+tr:hover {
+ background: #f2f2f2;
+}
+
+/* === FORMS === */
+form {
+ display: flex;
+ flex-direction: column;
+ gap: 1.4rem;
+}
+
+.box:has(> form) {
+ padding: 35px 35px;
+}
+
+fieldset {
+ border: 2px solid var(--border);
+ border-radius: 0.8em;
+ padding: 1.2rem 1.5rem;
+ background: var(--bg-alt);
+}
+
+legend {
+ font-weight: bold;
+ color: #000;
+ padding: 0 0.4rem;
+ font-size: 1.05rem;
+}
+
+label {
+ font-weight: 500;
+}
+
+input[type="text"],
+input[type="email"],
+input[type="password"],
+input[type="number"],
+input[type="tel"],
+input[type="date"],
+textarea,
+select {
+ width: 100%;
+ font-size: 1rem;
+ margin-top: 6px;
+ margin-bottom: 8px;
+ border: 2px solid var(--border);
+ border-radius: 0.5em;
+ padding: 0.4rem 0.5rem;
+ transition: all 0.2s ease;
+ background: var(--bg);
+}
+
+textarea {
+ resize: vertical;
+ min-height: 100px;
+}
+
+input:focus,
+textarea:focus,
+select:focus {
+ outline: none;
+ border-color: #000;
+ box-shadow: 0 0 6px rgba(0, 0, 0, 0.4);
+ background: #f9f9f9;
+}
+
+input[type="radio"],
+input[type="checkbox"] {
+ accent-color: #000;
+ transform: scale(1.2);
+ margin-right: 0.3rem;
+}
+
+/* === BUTTONS === */
+button,
+input[type="submit"],
+input[type="button"],
+input[type="reset"] {
+ padding: 10px 20px;
+ border: 2px solid var(--border);
+ border-radius: 0.5em;
+ font-weight: bold;
+ font-size: 1rem;
+ background: linear-gradient(180deg, #fff 0%, #f2f2f2 100%);
+ cursor: pointer;
+ transition: all 0.2s ease;
+ align-self: flex-start;
+}
+
+button {
+ width: 100%;
+}
+
+button:hover,
+input[type="submit"]:hover,
+input[type="button"]:hover,
+input[type="reset"]:hover {
+ background: #eaeaea;
+ box-shadow: rgba(0, 0, 0, 0.25) 3px 3px 6px;
+ transform: translateY(-2px);
+}
+
+button:active,
+input[type="submit"]:active,
+input[type="button"]:active,
+input[type="reset"]:active {
+ transform: translateY(0);
+ box-shadow: rgba(0, 0, 0, 0.15) 1px 1px 3px;
+ background: #f7f7f7;
+}
+
+/* === HR, CODE, ETC. === */
+hr {
+ border: 0;
+ border-top: 2px solid var(--border);
+ margin: 1.5rem 0;
+}
+
+img {
+ max-width: 100%;
+ border-radius: 0.5em;
+}
+
+code, pre {
+ background: #f4f4f4;
+ border: 1px solid #ccc;
+ border-radius: 0.4em;
+ padding: 0.3em 0.5em;
+ font-family: "Courier New", monospace;
+}
+
+pre {
+ padding: 1em;
+ overflow-x: auto;
+}
+
+/* === RESPONSIVE === */
+@media (max-width: 900px) {
+ header, .box {
+ width: 95%;
+ padding: 20px;
+ }
+
+ button {
+ width: 100%;
+ }
+
+ textarea {
+ width: 100%;
+ }
+}
+
+@media (max-width: 600px) {
+ header h1 {
+ font-size: 1.7rem;
+ }
+
+ header h2 {
+ font-size: 0.95rem;
+ }
+}
diff --git a/Zadania/Z99 - podzielne przez 3 i 5/index.php b/Zadania/Z99 - podzielne przez 3 i 5/index.php
new file mode 100644
index 0000000..0785178
--- /dev/null
+++ b/Zadania/Z99 - podzielne przez 3 i 5/index.php
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+ Z99 - podzielne przez 3 i 5
+
+
+
+
+ Zadanie Z99
+ Autor: Jakub Grzegorczyk
+
+
+
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.
+
+
+
+
+
+ Wymiary tablicy
+ Liczba wierszy (n):
+
+ Liczba kolumn (m):
+
+
+
+ Wartości tablicy (liczby całkowite oddzielone przecinkami):
+
+
+
+ Wyślij
+
+
+ 0 &&
+ (int)$mInput > 0;
+
+ $n = (int)$nInput;
+ $m = (int)$mInput;
+
+ $values = array_map('trim', explode(',', $valuesInput));
+ $count = count($values);
+ $isCountValid = $count === ($n*$m);
+
+ $areAllValuesValid = true;
+ foreach ($values as $value) {
+ if (!is_numeric($value)) { $areAllValuesValid = false; }
+ else { $value = (int)$value;}
+ }
+ echo '';
+ 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 '';
+}
+?>
+
+
diff --git a/Zadania/Z99 - podzielne przez 3 i 5/style.css b/Zadania/Z99 - podzielne przez 3 i 5/style.css
new file mode 100644
index 0000000..458b193
--- /dev/null
+++ b/Zadania/Z99 - podzielne przez 3 i 5/style.css
@@ -0,0 +1,300 @@
+/* === UNIVERSAL SCHOOL TEMPLATE CSS (BLACK & WHITE EDITION) === */
+/* clean, modern, and copy-paste friendly for all projects */
+
+/* === RESET === */
+* {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+
+/* === VARIABLES === */
+:root {
+ --accent: #000;
+ --border: #000;
+ --bg: #fff;
+ --bg-alt: #f7f7f7;
+ --text: #111;
+ --shadow: rgba(0, 0, 0, 0.15) 3px 3px 6px;
+ --radius: 1em;
+ --max-width: 1300px;
+}
+
+/* === PAGE === */
+body {
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Verdana, sans-serif;
+ background: linear-gradient(180deg, #ffffff 0%, #f5f5f5 100%);
+ color: var(--text);
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ min-height: 100vh;
+ line-height: 1.6;
+}
+
+/* === HEADER === */
+header {
+ border: 2px solid var(--border);
+ border-radius: var(--radius);
+ padding: 20px 30px;
+ box-shadow: var(--shadow);
+ background: var(--bg);
+ width: 95%;
+ max-width: var(--max-width);
+ text-align: center;
+ margin-top: 25px;
+ transition: box-shadow 0.3s ease, transform 0.2s ease;
+}
+
+header:hover {
+ box-shadow: rgba(0, 0, 0, 0.25) 4px 4px 10px;
+ transform: translateY(-2px);
+}
+
+header h1 {
+ font-size: 2.2rem;
+}
+
+header h2 {
+ margin-top: 0.5rem;
+ font-weight: 400;
+ font-size: 1.1rem;
+ color: #444;
+}
+
+/* === BOX === */
+.box {
+ border: 2px solid var(--border);
+ border-radius: var(--radius);
+ padding: 25px 35px;
+ margin-top: 25px;
+ background: var(--bg);
+ box-shadow: var(--shadow);
+ width: 95%;
+ max-width: var(--max-width);
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
+}
+
+.box:hover {
+ transform: translateY(-2px);
+ box-shadow: rgba(0, 0, 0, 0.25) 4px 4px 10px;
+}
+
+/* === TEXT ELEMENTS === */
+p {
+ margin-bottom: 1rem;
+}
+
+.box > p:last-child {
+ margin-bottom: 0;
+}
+
+h1, h2, h3, h4 {
+ margin-bottom: 0.5rem;
+ font-weight: 600;
+}
+
+a {
+ color: #000;
+ text-decoration: underline;
+ font-weight: 500;
+}
+
+a:hover {
+ opacity: 0.7;
+}
+
+/* === LISTS === */
+ul, ol {
+ margin: 1rem 0 1rem 1.5rem;
+}
+
+li {
+ margin-bottom: 0.4rem;
+}
+
+/* === TABLES === */
+table {
+ width: 100%;
+ border-collapse: collapse;
+ margin: 1rem 0;
+ background: var(--bg);
+ border: 2px solid var(--border);
+ border-radius: 0.6em;
+ overflow: hidden;
+ box-shadow: var(--shadow);
+}
+
+th, td {
+ padding: 10px 12px;
+ border-bottom: 1px solid #ccc;
+ text-align: center;
+}
+
+th {
+ background: var(--bg-alt);
+ font-weight: bold;
+ text-align: left;
+}
+
+tr:hover {
+ background: #f2f2f2;
+}
+
+/* === FORMS === */
+form {
+ display: flex;
+ flex-direction: column;
+ gap: 1.4rem;
+}
+
+.box:has(> form) {
+ padding: 35px 35px;
+}
+
+fieldset {
+ border: 2px solid var(--border);
+ border-radius: 0.8em;
+ padding: 1.2rem 1.5rem;
+ background: var(--bg-alt);
+}
+
+legend {
+ font-weight: bold;
+ color: #000;
+ padding: 0 0.4rem;
+ font-size: 1.05rem;
+}
+
+label {
+ font-weight: 500;
+}
+
+input[type="text"],
+input[type="email"],
+input[type="password"],
+input[type="number"],
+input[type="tel"],
+input[type="date"],
+textarea,
+select {
+ width: 100%;
+ font-size: 1rem;
+ margin-top: 6px;
+ margin-bottom: 8px;
+ border: 2px solid var(--border);
+ border-radius: 0.5em;
+ padding: 0.4rem 0.5rem;
+ transition: all 0.2s ease;
+ background: var(--bg);
+}
+
+textarea {
+ resize: vertical;
+ min-height: 100px;
+}
+
+input:focus,
+textarea:focus,
+select:focus {
+ outline: none;
+ border-color: #000;
+ box-shadow: 0 0 6px rgba(0, 0, 0, 0.4);
+ background: #f9f9f9;
+}
+
+input[type="radio"],
+input[type="checkbox"] {
+ accent-color: #000;
+ transform: scale(1.2);
+ margin-right: 0.3rem;
+}
+
+/* === BUTTONS === */
+button,
+input[type="submit"],
+input[type="button"],
+input[type="reset"] {
+ padding: 10px 20px;
+ border: 2px solid var(--border);
+ border-radius: 0.5em;
+ font-weight: bold;
+ font-size: 1rem;
+ background: linear-gradient(180deg, #fff 0%, #f2f2f2 100%);
+ cursor: pointer;
+ transition: all 0.2s ease;
+ align-self: flex-start;
+}
+
+button {
+ width: 100%;
+}
+
+button:hover,
+input[type="submit"]:hover,
+input[type="button"]:hover,
+input[type="reset"]:hover {
+ background: #eaeaea;
+ box-shadow: rgba(0, 0, 0, 0.25) 3px 3px 6px;
+ transform: translateY(-2px);
+}
+
+button:active,
+input[type="submit"]:active,
+input[type="button"]:active,
+input[type="reset"]:active {
+ transform: translateY(0);
+ box-shadow: rgba(0, 0, 0, 0.15) 1px 1px 3px;
+ background: #f7f7f7;
+}
+
+/* === HR, CODE, ETC. === */
+hr {
+ border: 0;
+ border-top: 2px solid var(--border);
+ margin: 1.5rem 0;
+}
+
+img {
+ max-width: 100%;
+ border-radius: 0.5em;
+}
+
+code, pre {
+ background: #f4f4f4;
+ border: 1px solid #ccc;
+ border-radius: 0.4em;
+ padding: 0.3em 0.5em;
+ font-family: "Courier New", monospace;
+}
+
+pre {
+ padding: 1em;
+ overflow-x: auto;
+}
+
+/* === RESPONSIVE === */
+@media (max-width: 900px) {
+ header, .box {
+ width: 95%;
+ padding: 20px;
+ }
+
+ button {
+ width: 100%;
+ }
+
+ textarea {
+ width: 100%;
+ }
+}
+
+@media (max-width: 600px) {
+ header h1 {
+ font-size: 1.7rem;
+ }
+
+ header h2 {
+ font-size: 0.95rem;
+ }
+}