# Informatyka — zadanie 5.1

> Źródło: matura.lol — https://matura.lol/question/maturazai-informatyka-inf-2015-05/zad/5.1
> Wersja Markdown strony zadania (dla asystentów AI). Przy cytowaniu podaj matura.lol i link powyżej.

- arkusz: Informatyka · Matura · maj 2015 (rozszerzona)
- rok: 2015
- poziom: rozszerzona
- typ: open
- punkty: 5
- działy: Programowanie i algorytmika

## Treść

Zadanie 5. Demografia

W kolejnych wierszach pliku kraina.txt znajdują się dane demograficzne Edulandii, która składa się z 50 województw. Każde z województw znajduje się w jednym z 4 regionów: A, B, C lub D. Każdy wiersz zawiera oddzielone średnikami informacje o jednym województwie: nazwa, liczba kobiet 2013, liczba mężczyzn 2013, liczba kobiet 2014, liczba mężczyzn 2014.

Przykład:
w01D;1415007;1397195;1499070;1481105
w02D;1711390;1641773;1522030;1618733
w03C;1165105;1278732;1299953;1191621
w04D;949065;1026050;688027;723233

Nazwa zaczyna się literą „w”, dwucyfrowy numer, litera A/B/C/D (region).

Wyznacz ludność (liczbę wszystkich mieszkańców) każdego z regionów A, B, C i D w roku 2013. Następnie sporządź wykres kolumnowy porównujący ludności tych regionów w roku 2013. Zadbaj o czytelność wykresu.

## Rozwiązanie — maturazai.pl (AI)

## Poprawna odpowiedź

| Region | Ludność 2013 |
| A | **33 929 579** |
| B | **41 736 619** |
| C | **57 649 017** |
| D | **36 530 387** |

**Wykres kolumnowy** porównujący ludności regionów A, B, C, D w 2013 z opisem osi (Region / Ludność w mln) i legendą.

## Sposób 1 - Python (pandas + matplotlib)

```python
import pandas as pd
import matplotlib.pyplot as plt

# Wczytanie pliku
df = pd.read_csv('kraina.txt', sep=';', header=None,
names=['nazwa', 'k2013', 'm2013', 'k2014', 'm2014'])

# Wyodrębnij region z nazwy (ostatni znak)
df['region'] = df['nazwa'].str[-1]
# Ludność województwa 2013 = kobiety + mężczyźni
df['lud_2013'] = df['k2013'] + df['m2013']

# Sumuj po regionach
ludnosc = df.groupby('region')['lud_2013'].sum()
print(ludnosc)
# A 33929579
# B 41736619
# C 57649017
# D 36530387

# Wykres kolumnowy
fig, ax = plt.subplots(figsize=(8, 5))
ludnosc.plot(kind='bar', ax=ax, color=['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728'])
ax.set_title('Ludność regionów Edulandii w 2013 roku')
ax.set_xlabel('Region')
ax.set_ylabel('Ludność')
ax.grid(axis='y', linestyle='--', alpha=0.7)
for i, v in enumerate(ludnosc):
ax.text(i, v + 500000, f'{v:,}', ha='center', fontsize=10)
plt.tight_layout()
plt.savefig('wykres_5_1.png', dpi=150)
plt.show()

## Sposób 2 - arkusz kalkulacyjny (Excel/LibreOffice Calc)

**Krok 1: Wczytanie pliku**
- Dane → Z tekstu/CSV → wybierz separator średnik (;).
- Kolumny: A=nazwa, B=k2013, C=m2013, D=k2014, E=m2014.

**Krok 2: Wyodrębnienie regionu i obliczenie ludności**
- Kolumna F (region): `=PRAWY(A2; 1)` (ostatni znak nazwy).
- Kolumna G (ludność 2013): `=B2+C2` (kobiety + mężczyźni).

**Krok 3: Suma po regionie**
- Komórki I2:I5 (regiony A, B, C, D).
- J2: `=SUMA.JEŻELI(F2:F51; I2; G2:G51)` → 33929579 dla A.
- Skopiuj J2:J5.

**Krok 4: Wykres**
- Zaznacz I1:J5 → Wstaw → Wykres kolumnowy.
- Tytuł: "Ludność regionów Edulandii (2013)".
- Etykiety osi: Region / Ludność.

## Reference informatyczny - agregacja i wykres

> Reference - Group by + aggregation:
> - **Pandas**: `df.groupby(kolumna)[wartosc].sum()`.
> - **Excel**: `SUMA.JEŻELI(zakres_kryteriów; kryterium; zakres_sumy)`.
> - **SQL**: `SELECT region, SUM(ludnosc) FROM tabela GROUP BY region`.
> - **Matplotlib bar plot**: `plt.bar(x, y)` lub `pd.Series.plot(kind='bar')`.
> - **Wymagania CKE wykres**: tytuł, opis osi (xlabel, ylabel), legenda (jeśli > 1 seria), wartości na słupkach (czytelność).

## Schemat oceniania CKE

> Klucz CKE (zadanie 5.1, max 5 pkt):
> - **5 pkt** - poprawne liczby ORAZ poprawny wykres z opisem osi/legendą
> - **4 pkt** - poprawne liczby ORAZ wykres bez opisu
> - **3 pkt** - błędne liczby ALE poprawny wykres z opisem
> - **2 pkt** - poprawne liczby i błędny wykres, ALBO błędne liczby i wykres bez opisu
> - **0 pkt** - niepełna lub błędna albo brak. Nie przyznaje się 1 pkt.

## Typowe pułapki

- **Wyodrębnienie regionu**: nazwa typu `w01D` ma region jako 4. znak. `PRAWY(A2; 1)` lub `MID(A2; 4; 1)`.
- **Sumowanie tylko kobiet ALBO tylko mężczyzn** zamiast obu - kluczowe sumowanie obu.
- **Pomyłka roku**: użycie kolumn 2014 zamiast 2013.
- **Wykres bez opisu**: traci punkty (kolejne 1 pkt).
- **Pomylenie liczby województw w regionach** - nie wszystkie regiony mają tyle samo województw.
- **Pominięcie nagłówka pliku** - sprawdź czy `kraina.txt` ma wiersz nagłówkowy.

## Złożoność obliczeniowa

- Wczytanie + agregacja: O(N), gdzie N = 50 województw.
- Stworzenie wykresu: O(R), gdzie R = 4 regiony.
- **Całkowita: O(N)** (bardzo szybkie).

## Linki

- [dane JSON](https://matura.lol/api/question/maturazai-informatyka-inf-2015-05/zad/5.1)
- [otwórz w wyszukiwarce](https://matura.lol/?problem=maturazai-informatyka-inf-2015-05%2Fzad%2F5.1)

## Podobne zadania

- [Zadanie 5.1](https://matura.lol/question/informatyka-2015-maj-matura-rozszerzona-2/zad/5.1) — Zadanie 5. Demografia W kolejnych wierszach pliku kraina.txt znajdują się dane demograficzne Edulandii, która składa się z 50 województw. Każde z województw zna

_Ostatnia aktualizacja danych: 2026-10-03_
