W dniu 14 maja 2026 roku odbył się egzamin maturalny z informatyki na poziomie rozszerzonym. Na tej stronie znajdziesz omówienie zadań maturalnych z informatyki 2026, przykładowe rozwiązania, odpowiedzi oraz komentarze do arkusza.
Poniżej możesz pobrać arkusz maturalny z informatyki 2026 oraz pliki z danymi potrzebne do rozwiązania zadań praktycznych.
Pobierz arkusz maturalny z informatyki 2026 (PDF)
Pobierz pliki z danymi do matury z informatyki 2026 (ZIP)
Do matury z informatyki warto przygotowywać się przez systematyczne rozwiązywanie arkuszy z poprzednich lat. Szczególną uwagę należy zwrócić na programowanie, algorytmy, pracę na plikach, arkusz kalkulacyjny oraz bazy danych.
Na stronie algorytm.edu.pl znajdziesz również materiały pomocne w nauce programowania i przygotowaniu do matury z informatyki.
Odpowiedzi i rozwiązania zadań będą publikowane poniżej.
Dana jest zdefiniowana rekurencyjnie funkcja A(m, n), gdzie m i n są dodatnimi liczbami całkowitymi.
A(m, n) =
| { | m | gdy n = 1 |
| A(2 · m, n / 2) | gdy n > 1 oraz n jest podzielne przez 2 | |
| 2 · A(m, (n − 1) / 2) + m | gdy n > 1 oraz n nie jest podzielne przez 2 |
Obliczenie wartości funkcji A(3, 9) wprost z definicji wymaga trzech wywołań rekurencyjnych: A(3, 4), A(6, 2), A(12, 1), ponieważ:
A(3, 9) = 2 · A(3, 4) + 3 = 2 · A(6, 2) + 3 = 2 · A(12, 1) + 3 = 2 · 12 + 3 = 27
Uzupełnij poniższą tabelę. Podaj liczbę wywołań rekurencyjnych funkcji A oraz wypisz wywołania rekurencyjne wraz z ich argumentami — w ostatnim wierszu podaj tylko liczbę wywołań rekurencyjnych.
| m | n | liczba wywołań rekurencyjnych funkcji A | wywołania rekurencyjne funkcji A |
|---|---|---|---|
| 3 | 9 | 3 | A(3, 4), A(6, 2), A(12, 1) |
| 25 | 25 | 5 | A(26, 24), A(27, 23), A(28, 22), A(29, 21), A(210, 20) |
| 10 | 15 | 3 | A(10, 7), A(10, 3), A(10, 1) |
| 1 | 2100 + 1 | 100 | — |
Uzupełnij poniższą tabelę. Podaj wartości funkcji A(m, n) dla zadanych argumentów m i n:
| m | n | A(m, n) |
|---|---|---|
| 1 | 777 | 777 |
| 2 · 106 | 256 · 106 | 512 · 1012 = 512 000 000 000 000 |
Uwaga: W swoich odpowiedziach możesz zapisać wynik podobnie jak wartości w pierwszych dwóch kolumnach, z wykorzystaniem operatorów mnożenia i potęgowania.
Uzupełnij tabelę. W drugiej kolumnie podaj liczbę wywołań rekurencyjnych funkcji A dla każdej wartości n podanej w tabeli. W trzeciej kolumnie podaj wyrażenie, którego wartość jest równa drugiemu argumentowi funkcji w i-tym wywołaniu rekurencyjnym.
| n – drugi argument wywołania funkcji | liczba wywołań rekurencyjnych | wartość drugiego argumentu A w i-tym wywołaniu rekurencyjnym |
|---|---|---|
| 8 | 3 | 8 / 2i |
| 2k | k | 2k − i |
| 2k − 1 | k − 1 | 2k − i − 1 |
gdzie k jest pewną liczbą całkowitą dodatnią większą od 2.
Rozważamy dodawanie pisemne dwóch liczb zapisanych w systemie dziesiętnym. Podczas dodawania kolejnych cyfr od prawej do lewej może pojawić się przeniesienie do następnej kolumny.
| Przeniesienie: | 1 | 1 | 1 | 1 | ||
| Liczba a: | 2 | 7 | 7 | 3 | 2 | |
| Liczba b: | + | 7 | 2 | 6 | 1 | 9 |
| 1 | 0 | 0 | 3 | 5 | 1 | |
W tym przykładzie mamy 4 przeniesienia.
W powyższym przykładzie podczas dodawania pojawiają się 4 przeniesienia.
Dla podanych par liczb a i b określ, ile razy pojawi się przeniesienie podczas ich dodawania pisemnego.
| Liczba A | Liczba B | Liczba przeniesień |
|---|---|---|
| 37932 | 12528 | 3 |
| 88765 | 11111 | 0 |
| 456789 | 222222 | 3 |
Napisz algorytm, który dla dwóch dodatnich liczb całkowitych a i b, mających taką samą liczbę cyfr, oblicza liczbę przeniesień powstających podczas ich dodawania pisemnego.
Przykład:
Dla liczb 27732 i 72619 wynikiem jest
4.
Algorytm powinien działać na liczbach całkowitych, bez zamiany liczb na napisy oraz bez używania tablic lub list. Wystarczy analizować kolejne cyfry od końca, używając reszty z dzielenia przez 10 oraz dzielenia całkowitego przez 10.
Przechodzimy po cyfrach od prawej do lewej. W każdej kolumnie dodajemy: cyfrę liczby a, cyfrę liczby b oraz ewentualne przeniesienie z poprzedniej kolumny. Jeśli suma jest większa lub równa 10, zwiększamy licznik przeniesień i ustawiamy przeniesienie na 1. W przeciwnym razie przeniesienie wynosi 0.
def liczba_przeniesien(a, b):
p = 0
przeniesienie = 0
while a > 0:
cyfra_a = a % 10
cyfra_b = b % 10
suma = cyfra_a + cyfra_b + przeniesienie
if suma >= 10:
p += 1
przeniesienie = 1
else:
przeniesienie = 0
a //= 10
b //= 10
return p
# przykład
print(liczba_przeniesien(27732, 72619)) # 4
#include <iostream>
using namespace std;
int liczba_przeniesien(long long a, long long b)
{
int p = 0;
int przeniesienie = 0;
while (a > 0)
{
int cyfra_a = a % 10;
int cyfra_b = b % 10;
int suma = cyfra_a + cyfra_b + przeniesienie;
if (suma >= 10)
{
p++;
przeniesienie = 1;
}
else
{
przeniesienie = 0;
}
a /= 10;
b /= 10;
}
return p;
}
int main()
{
cout << liczba_przeniesien(27732, 72619) << endl; // 4
return 0;
}
W pliku tekstowym pary.txt znajduje się 500 par słów złożonych z liter
alfabetu angielskiego: a, b, ..., z. Każda para słów jest zapisana w osobnym
wierszu. Słowa w wierszu są oddzielone pojedynczym odstępem, a długość każdego
z nich nie przekracza 50 znaków.
Pierwszych pięć wierszy pliku pary.txt zawiera następujące pary słów:
bcba babb
abaa ccc
bcb abbba
bca cdd
aadc ddcdccaba
Napisz program, który znajdzie odpowiedzi do podanych zadań. Odpowiedzi do
poszczególnych zadań zapisz w pliku wyniki3.txt. Każdą odpowiedź
poprzedź numerem oznaczającym zadanie.
pary.txt. Plik pary_przyklad.txt służy tylko do sprawdzania
poprawności działania programu.
Niech f(s) oznacza sumę kodów ASCII znaków występujących w słowie
s. Podaj parę słów s1,
s2 występujących w jednym wierszu pliku
pary.txt, dla których wartość
|f(s1) − f(s2)| jest największa,
oraz podaj tę wartość.
Dla pary słów oko i pies mamy:
f(oko) = 111 + 107 + 111 = 329
f(pies) = 112 + 105 + 101 + 115 = 433
|f(oko) − f(pies)| = 104
pary.txt poprawną odpowiedzią jest:gpeeazeugmvsbzwsrxfplqdbakoxxe lhpbmoirdm 2206
Wspólną liczbę wystąpień litery x w słowach s1, s2 oznaczamy przez:
W(x, s1, s2) = minimum(d(x, s1), d(x, s2))
gdzie d(x, s) oznacza liczbę wystąpień litery x w słowie s.
Podaj parę słów występujących w jednym wierszu w pliku pary.txt,
dla której suma wspólnych wystąpień wszystkich liter jest największa,
oraz podaj tę sumę.
Dla pary słów adabbcdde i aadabbbccdc
wspólne liczby wystąpień liter wynoszą:
a: 2, b: 2, c: 1, d: 2, e: 0
Suma wspólnych wystąpień wynosi 7.
pary.txt poprawną odpowiedzią jest:aacbcccaacacbcabac cccccaaaacaccbabcba 18
Prefiksosufiksem pary słów s1, s2 nazywamy słowo, które jest początkiem s1 oraz końcem s2 albo początkiem s2 oraz końcem s1.
Podaj wszystkie pary słów z pliku pary.txt, dla których najdłuższy
prefiksosufiks ma co najmniej 5 liter. Dla każdej takiej pary
podaj długość najdłuższego prefiksosufiksu.
Dla pary aabbbca caacaab prefiksosufiksy to:
aab — początek pierwszego słowa i koniec drugiego,ca — początek drugiego słowa i koniec pierwszego.Najdłuższy prefiksosufiks ma długość 3, więc para nie spełnia warunków zadania.
Dla pary abbaabaa baabaabba prefiksosufiksy to:
a — początek pierwszego słowa i koniec drugiego,abba — początek pierwszego słowa i koniec drugiego,baa — początek drugiego słowa i koniec pierwszego,baabaa — początek drugiego słowa i koniec pierwszego.Najdłuższy prefiksosufiks ma długość 6, więc para spełnia warunki zadania.
pary_przyklad.txt poprawną odpowiedzią jest:bbbbaabbababbaaaa baaaaabaaabbbabab 5
aababbbababbbbbbaab bbbbaabbababababa 7
aaaababaaaabbbb aabbbbbabbbaaaa 6
bbbbabaaabbbabb aaababaabbbbbbba 5
ccccabacbba acbbabcbcbcbaa 5
caabbccabccc cabccccabbaac 6
abaacabcccccabbbc abbbcbbbbbcabaca 5
def suma_ascii(s):
suma = 0
for znak in s:
suma += ord(znak)
return suma
def suma_wspolnych_wystapien(s1, s2):
wynik = 0
for kod in range(ord('a'), ord('z') + 1):
litera = chr(kod)
wynik += min(s1.count(litera), s2.count(litera))
return wynik
def najdluzszy_prefiksosufiks(s1, s2):
najlepszy = 0
maks = min(len(s1), len(s2))
for dl in range(1, maks + 1):
# początek s1 i koniec s2
if s1[:dl] == s2[-dl:]:
najlepszy = dl
# początek s2 i koniec s1
if s2[:dl] == s1[-dl:]:
najlepszy = dl
return najlepszy
pary = []
with open("pary.txt", "r", encoding="utf-8") as plik:
for wiersz in plik:
s1, s2 = wiersz.split()
pary.append((s1, s2))
# Zadanie 3.1
max_roznica = -1
odp_31 = ("", "", 0)
for s1, s2 in pary:
roznica = abs(suma_ascii(s1) - suma_ascii(s2))
if roznica > max_roznica:
max_roznica = roznica
odp_31 = (s1, s2, roznica)
# Zadanie 3.2
max_suma = -1
odp_32 = ("", "", 0)
for s1, s2 in pary:
suma = suma_wspolnych_wystapien(s1, s2)
if suma > max_suma:
max_suma = suma
odp_32 = (s1, s2, suma)
# Zadanie 3.3
odp_33 = []
for s1, s2 in pary:
dl = najdluzszy_prefiksosufiks(s1, s2)
if dl >= 5:
odp_33.append((s1, s2, dl))
with open("wyniki3.txt", "w", encoding="utf-8") as wynik:
wynik.write("3.1\\n")
wynik.write(f"{odp_31[0]} {odp_31[1]} {odp_31[2]}\\n")
wynik.write("\\n3.2\\n")
wynik.write(f"{odp_32[0]} {odp_32[1]} {odp_32[2]}\\n")
wynik.write("\\n3.3\\n")
for s1, s2, dl in odp_33:
wynik.write(f"{s1} {s2} {dl}\\n")
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <cmath>
using namespace std;
int suma_ascii(string s)
{
int suma = 0;
for (char znak : s)
suma += int(znak);
return suma;
}
int suma_wspolnych_wystapien(string s1, string s2)
{
int licznik1[26] = {};
int licznik2[26] = {};
for (char znak : s1)
licznik1[znak - 'a']++;
for (char znak : s2)
licznik2[znak - 'a']++;
int wynik = 0;
for (int i = 0; i < 26; i++)
wynik += min(licznik1[i], licznik2[i]);
return wynik;
}
int najdluzszy_prefiksosufiks(string s1, string s2)
{
int najlepszy = 0;
int maks = min(s1.size(), s2.size());
for (int dl = 1; dl <= maks; dl++)
{
bool pierwszy = true;
bool drugi = true;
// początek s1 i koniec s2
for (int i = 0; i < dl; i++)
{
if (s1[i] != s2[s2.size() - dl + i])
pierwszy = false;
}
// początek s2 i koniec s1
for (int i = 0; i < dl; i++)
{
if (s2[i] != s1[s1.size() - dl + i])
drugi = false;
}
if (pierwszy || drugi)
najlepszy = dl;
}
return najlepszy;
}
int main()
{
ifstream wejscie("pary.txt");
ofstream wynik("wyniki3.txt");
vector<pair<string, string>> pary;
string s1, s2;
while (wejscie >> s1 >> s2)
pary.push_back({s1, s2});
// Zadanie 3.1
int max_roznica = -1;
string odp31_s1, odp31_s2;
for (auto para : pary)
{
string a = para.first;
string b = para.second;
int roznica = abs(suma_ascii(a) - suma_ascii(b));
if (roznica > max_roznica)
{
max_roznica = roznica;
odp31_s1 = a;
odp31_s2 = b;
}
}
// Zadanie 3.2
int max_suma = -1;
string odp32_s1, odp32_s2;
for (auto para : pary)
{
string a = para.first;
string b = para.second;
int suma = suma_wspolnych_wystapien(a, b);
if (suma > max_suma)
{
max_suma = suma;
odp32_s1 = a;
odp32_s2 = b;
}
}
// Zapis wyników
wynik << "3.1\\n";
wynik << odp31_s1 << " " << odp31_s2 << " " << max_roznica << "\\n\\n";
wynik << "3.2\\n";
wynik << odp32_s1 << " " << odp32_s2 << " " << max_suma << "\\n\\n";
wynik << "3.3\\n";
for (auto para : pary)
{
string a = para.first;
string b = para.second;
int dl = najdluzszy_prefiksosufiks(a, b);
if (dl >= 5)
wynik << a << " " << b << " " << dl << "\\n";
}
return 0;
}
W korporacji pracuje n osób, które na potrzeby zadania ponumerujemy liczbami 1, 2, ..., n. Pracownik numer 1 jest prezesem korporacji, a każdy z pozostałych pracowników ma dokładnie jednego bezpośredniego przełożonego.
Numer bezpośredniego przełożonego pracownika x jest zawsze mniejszy od numeru tego pracownika. Prezes korporacji nie ma żadnego przełożonego.
Przełożonym pracownika jest jego bezpośredni przełożony oraz każdy przełożony tego bezpośredniego przełożonego. Jeśli x jest przełożonym pracownika y, to y jest podwładnym pracownika x.
W przykładowej hierarchii:
Przełożonymi pracownika 7 są pracownicy 3, 2 i 1. Bezpośrednim przełożonym pracownika 7 jest pracownik 3. Podwładnymi pracownika 2 są pracownicy 3, 5, 6 i 7.
Dla każdego pracownika z przykładowej hierarchii określ, ilu ma on bezpośrednich podwładnych oraz ilu ma wszystkich podwładnych.
| Numer pracownika | Liczba bezpośrednich podwładnych | Liczba wszystkich podwładnych |
|---|---|---|
| 1 | 2 | 7 |
| 2 | 3 | 4 |
| 3 | 1 | 1 |
| 4 | 1 | 1 |
| 5 | 0 | 0 |
| 6 | 0 | 0 |
| 7 | 0 | 0 |
| 8 | 0 | 0 |
Dany jest plik korpo.txt zawierający n = 50 000 liczb,
który opisuje strukturę korporacji.
W pierwszym wierszu znajduje się liczba 0, oznaczająca brak przełożonego dla prezesa korporacji, który ma numer 1. W i-tym wierszu pliku, dla 2 ≤ i ≤ 50 000, znajduje się numer pracownika, który jest bezpośrednim przełożonym pracownika i.
Odpowiedzi do zadań zapisz w pliku wyniki4.txt, poprzedzając każdą
odpowiedź numerem odpowiedniego zadania.
Na podstawie danych zapisanych w pliku korpo.txt podaj,
ilu pracowników nie jest przełożonym żadnego pracownika.
25113
Podaj, który pracownik spośród zapisanych w pliku korpo.txt ma
najwięcej bezpośrednich podwładnych. Podaj numer tego pracownika
oraz liczbę jego bezpośrednich podwładnych.
2 19
Osoba 2, 19 bezpośrednich podwładnych.
Policz, ilu najwięcej przełożonych ma jeden pracownik. Podaj tę liczbę oraz podaj, ilu pracowników ma taką liczbę przełożonych.
22 2
Największa liczba przełożonych: 22
Liczba pracowników: 2
Wczytujemy tablicę przelozony, w której przelozony[i]
oznacza bezpośredniego przełożonego pracownika i.
# Zadanie 4. Korporacja
with open("korpo.txt", "r", encoding="utf-8") as plik:
dane = [int(wiersz.strip()) for wiersz in plik if wiersz.strip()]
n = len(dane)
# pracownicy numerowani są od 1, więc dodajemy fikcyjne pole na indeksie 0
przelozony = [0] + dane
# liczba bezpośrednich podwładnych każdego pracownika
bezposredni = [0] * (n + 1)
for pracownik in range(2, n + 1):
szef = przelozony[pracownik]
bezposredni[szef] += 1
# Zadanie 4.2
liczba_bez_podwladnych = 0
for pracownik in range(1, n + 1):
if bezposredni[pracownik] == 0:
liczba_bez_podwladnych += 1
# Zadanie 4.3
max_bezposrednich = -1
pracownik_max = -1
for pracownik in range(1, n + 1):
if bezposredni[pracownik] > max_bezposrednich:
max_bezposrednich = bezposredni[pracownik]
pracownik_max = pracownik
# Zadanie 4.4
liczba_przelozonych = [0] * (n + 1)
for pracownik in range(2, n + 1):
liczba_przelozonych[pracownik] = liczba_przelozonych[przelozony[pracownik]] + 1
max_przelozonych = max(liczba_przelozonych[1:])
ilu_ma_max = 0
for pracownik in range(1, n + 1):
if liczba_przelozonych[pracownik] == max_przelozonych:
ilu_ma_max += 1
with open("wyniki4.txt", "w", encoding="utf-8") as wynik:
wynik.write("4.2\\n")
wynik.write(str(liczba_bez_podwladnych) + "\\n\\n")
wynik.write("4.3\\n")
wynik.write(str(pracownik_max) + " " + str(max_bezposrednich) + "\\n\\n")
wynik.write("4.4\\n")
wynik.write(str(max_przelozonych) + " " + str(ilu_ma_max) + "\\n")
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main()
{
ifstream wejscie("korpo.txt");
ofstream wynik("wyniki4.txt");
vector<int> dane;
int x;
while (wejscie >> x)
dane.push_back(x);
int n = dane.size();
vector<int> przelozony(n + 1);
for (int i = 1; i <= n; i++)
przelozony[i] = dane[i - 1];
vector<int> bezposredni(n + 1, 0);
for (int pracownik = 2; pracownik <= n; pracownik++)
{
int szef = przelozony[pracownik];
bezposredni[szef]++;
}
// Zadanie 4.2
int liczba_bez_podwladnych = 0;
for (int pracownik = 1; pracownik <= n; pracownik++)
{
if (bezposredni[pracownik] == 0)
liczba_bez_podwladnych++;
}
// Zadanie 4.3
int max_bezposrednich = -1;
int pracownik_max = -1;
for (int pracownik = 1; pracownik <= n; pracownik++)
{
if (bezposredni[pracownik] > max_bezposrednich)
{
max_bezposrednich = bezposredni[pracownik];
pracownik_max = pracownik;
}
}
// Zadanie 4.4
vector<int> liczba_przelozonych(n + 1, 0);
for (int pracownik = 2; pracownik <= n; pracownik++)
{
liczba_przelozonych[pracownik] =
liczba_przelozonych[przelozony[pracownik]] + 1;
}
int max_przelozonych = 0;
for (int pracownik = 1; pracownik <= n; pracownik++)
{
if (liczba_przelozonych[pracownik] > max_przelozonych)
max_przelozonych = liczba_przelozonych[pracownik];
}
int ilu_ma_max = 0;
for (int pracownik = 1; pracownik <= n; pracownik++)
{
if (liczba_przelozonych[pracownik] == max_przelozonych)
ilu_ma_max++;
}
wynik << "4.2\\n";
wynik << liczba_bez_podwladnych << "\\n\\n";
wynik << "4.3\\n";
wynik << pracownik_max << " " << max_bezposrednich << "\\n\\n";
wynik << "4.4\\n";
wynik << max_przelozonych << " " << ilu_ma_max << "\\n";
return 0;
}
Poniżej zapisano wyrażenie matematyczne zawierające liczby zapisane w systemach: piątkowym, dziesiętnym i trójkowym.
W miejsce kropek wpisz odpowiednie liczby zapisane w systemie piątkowym i trójkowym, tak aby obie równości były prawdziwe.
Liczbę (1440)5 zamieniamy na system dziesiętny:
(1440)5 = 1 · 53 + 4 · 52 + 4 · 51 + 0 = 245
Skoro wynik ma być równy 427, druga liczba w systemie piątkowym musi mieć wartość:
427 − 245 = 182 = (1212)5
Z kolei:
(110002)3 = 1 · 35 + 1 · 34 + 0 · 33 + 0 · 32 + 0 · 31 + 2 = 326
Aby po odjęciu otrzymać 427, pierwsza liczba w systemie trójkowym musi mieć wartość:
427 + 326 = 753 = (1000220)3
Uzupełnij zdania dotyczące długości adresów IP w wersji 4 oraz w wersji 6.
Adres IP w wersji 4 ma długość bity.
Adres IP w wersji 6 ma długość bitów.
Adres IP w wersji 4 ma długość 32 bity.
Adres IP w wersji 6 ma długość 128 bitów.
Pan Iksiński stał się właścicielem stawu o powierzchni całkowitej 10 000 m2. Pierwszą rośliną, którą postanowił w nim umieścić, jest rzęsa wodna, która osiąga wysoką skuteczność rozmnażania wegetatywnego, tzn. przy odpowiedniej temperaturze i wielkości opadów potrafi znacząco zwiększyć rozmiar zajmowanej powierzchni.
W pliku staw.txt są zawarte następujące informacje, rozdzielone znakami tabulacji:
Data – data pomiaru,Temp – temperatura w danym dniu w °C, zaokrąglona do jednego miejsca po przecinku,Opady – wielkość opadu w mm, zaokrąglona do liczby całkowitej.
Plik zawiera dane z całego 2022 roku. Z wykorzystaniem danych zawartych
w pliku oraz dostępnych narzędzi informatycznych wykonaj podane zadania.
Wyniki zapisz w pliku tekstowym wyniki7.txt. Odpowiedź do każdego zadania
poprzedź numerem tego zadania.
Pobierz arkusz z rozwiązaniem zadania 7 (Excel)
Utwórz zestawienie średnich miesięcznych temperatur w zaokrągleniu do jednego miejsca po przecinku. Na podstawie wykonanego zestawienia utwórz wykres kolumnowy, porównujący te wartości. Pamiętaj o czytelnym opisie wykresu: tytuł wykresu, opisy osi oraz oznaczenie miesięcy na osi X.
| Etykiety wierszy | Średnia z temp |
|---|---|
| 1 | 1,1 |
| 2 | 4,1 |
| 3 | 4,1 |
| 4 | 7,4 |
| 5 | 15,9 |
| 6 | 20,5 |
| 7 | 20,4 |
| 8 | 21,1 |
| 9 | 13,7 |
| 10 | 12,5 |
| 11 | 5,2 |
| 12 | 1,6 |
Na podstawie zestawienia należy utworzyć wykres kolumnowy porównujący średnie temperatury miesięczne.
Dla każdego miesiąca wyznacz długość najdłuższego ciągu kolejnych dni bez opadów w tym miesiącu, czyli takich dni, dla których wartość opadów jest równa 0.
| Etykiety wierszy | Maksimum z dł. ciągu zer w miesiącu |
|---|---|
| 1 | 11 |
| 2 | 7 |
| 3 | 20 |
| 4 | 8 |
| 5 | 20 |
| 6 | 11 |
| 7 | 10 |
| 8 | 8 |
| 9 | 14 |
| 10 | 15 |
| 11 | 10 |
| 12 | 10 |
Na potrzeby zadania przyjmujemy, że w kolejnym roku przez 184 dni, od 1 marca 2023 do 31 sierpnia 2023, temperatury i opady utrzymywały się na stałym poziomie, co pozwalało na regularny wzrost rzęsy wodnej w tempie rozrostu 1,75% dziennie. Przyrost rzęsy następował w nocy, a pomiar zarośnięcia stawu – rano.
1 marca 2023 rano staw był zarośnięty rzęsą w 20%, tj. rzęsa wodna zajmowała 2000 m2.
Ponieważ staw nie powinien być zarośnięty w całości, właściciel postanowił pozbywać się nadmiaru rzęsy. Do zbiornika wpuścił 80 amurów białych, z których każdy zjadał w ciągu dnia 0,25 m2 rzęsy wodnej. Dodatkowo co piątek w ciągu dnia odławiał 60 m2 rzęsy wodnej.
Uwaga: 30 kwietnia rano staw był zarośnięty w 25,79%.
Podaj, w którym dniu, licząc od 1 marca 2023, pomiar wykazał, że rzęsa wodna po raz pierwszy zajęła więcej niż 75% powierzchni stawu.
167
lub
2023-08-14
Podaj, jaka jest najmniejsza liczba amurów białych, jaką musi wpuścić właściciel, by rzęsa wodna w całym badanym okresie zajmowała maksymalnie 50% powierzchni stawu.
94
W trzech plikach tekstowych o nazwach klienci.txt,
transakcje.txt, opis_transakcji.txt zapisano dane
o sprzedaży towarów w pewnej sieci sklepów w porach wieczornych pierwszych dni miesiąca.
Dane obejmują informacje od 1. do 3. dnia miesiąca w miesiącach od stycznia do czerwca 2025 roku w godzinach od 22:00 do 23:59. Pierwszy wiersz każdego z plików jest wierszem nagłówkowym, a dane w wierszach rozdzielono tabulatorami.
Pobierz bazę danych z rozwiązaniem zadania 8 (Access)
Plik klienci.txt zawiera informacje o zarejestrowanych klientach:
IdKlienta, Imie, Nazwisko, Plec.
Plik transakcje.txt zawiera informacje o dokonanych transakcjach:
IdTransakcji, DataTransakcji, IdKlienta,
IdSklepu, IdSprzedawcy. Jeśli klient korzystał z kasy
samoobsługowej, pole IdSprzedawcy jest puste.
Plik opis_transakcji.txt zawiera informacje o produktach zakupionych
w danej transakcji: IdTransakcji, IdProduktu,
Cena, Liczba.
Podaj imię i nazwisko klienta, który dokonał łącznie najwięcej transakcji w całym analizowanym okresie.
Marcelino Kruk
Podaj, ile kobiet (K) oraz ilu mężczyzn (M) spośród klientów sieci sklepów nie kupiło niczego w całym analizowanym okresie.
K – 689 i M – 651
Podaj liczbę różnych sklepów, w których dokonano transakcji w kasach samoobsługowych, oraz podaj, ile zapłacono łącznie za zakupy w tych kasach.
28 sklepów, kwota:
19443,29
Niektórzy sprzedawcy pracowali w różnych sklepach sieci w ciągu miesiąca.
Podaj IdSprzedawcy, który obsługiwał klientów w największej liczbie
różnych sklepów w jednym miesiącu, oraz podaj ten miesiąc — nazwę lub numer.
14, styczeń
Do bazy danych utworzonej na podstawie opisanych wcześniej plików dodano dwie
kolejne tabele: Produkty i Kategorie, w których zapisano
informacje o sprzedawanych produktach.
Tabela Kategorie zawiera pola:
IdKategorii oraz NazwaKategorii.
Tabela Produkty zawiera pola:
IdProduktu, IdKategorii, Nazwa,
Opis.
Napisz w języku SQL zapytanie, w wyniku którego zostaną wypisane wszystkie
zakupione produkty — IdProduktu i Nazwa — z kategorii
„spozywcze”, zawierające w opisie fragment:
„do ekspresu kolbowego”.
SELECT DISTINCT
Produkty.IdProduktu,
Produkty.Nazwa
FROM
(Kategorie
INNER JOIN Produkty
ON Kategorie.IdKategorii = Produkty.IdKategorii)
INNER JOIN opis_transakcji
ON Produkty.IdProduktu = opis_transakcji.IdProduktu
WHERE
Kategorie.NazwaKategorii = "spozywcze"
AND Produkty.Opis LIKE "*do ekspresu kolbowego*";
Użycie DISTINCT usuwa powtórzenia, ponieważ ten sam produkt
mógł zostać kupiony w wielu transakcjach.
Omówienie przygotowuje Marcin Kasprowicz — czynny egzaminator maturalny z informatyki oraz twórca serwisu algorytm.edu.pl.
Zapraszam — Marcin Kasprowicz