{"id":"informatyka-2015-maj-matura-rozszerzona/zad/5.1","paper_id":"informatyka-2015-maj-matura-rozszerzona","number":"5.1","points":5,"ptype":"open","subject":"informatyka","category":"matura","year":2015,"month":"maj","level":"rozszerzona","text":"Zadanie 5. Demografia\n\nW 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.\n\nPrzykład:\nw01D;1415007;1397195;1499070;1481105\nw02D;1711390;1641773;1522030;1618733\nw03C;1165105;1278732;1299953;1191621\nw04D;949065;1026050;688027;723233\n\nNazwa zaczyna się literą „w”, dwucyfrowy numer, litera A/B/C/D (region).\n\nWyznacz 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.","answer":null,"answer_text":null,"solution":"## Poprawna odpowiedź\n\n| Region | Ludność 2013 |\n| A | **33 929 579** |\n| B | **41 736 619** |\n| C | **57 649 017** |\n| D | **36 530 387** |\n\n**Wykres kolumnowy** porównujący ludności regionów A, B, C, D w 2013 z opisem osi (Region / Ludność w mln) i legendą.\n\n## Sposób 1 - Python (pandas + matplotlib)\n\n```python\nimport pandas as pd\nimport matplotlib.pyplot as plt\n\n# Wczytanie pliku\ndf = pd.read_csv('kraina.txt', sep=';', header=None,\nnames=['nazwa', 'k2013', 'm2013', 'k2014', 'm2014'])\n\n# Wyodrębnij region z nazwy (ostatni znak)\ndf['region'] = df['nazwa'].str[-1]\n# Ludność województwa 2013 = kobiety + mężczyźni\ndf['lud_2013'] = df['k2013'] + df['m2013']\n\n# Sumuj po regionach\nludnosc = df.groupby('region')['lud_2013'].sum()\nprint(ludnosc)\n# A 33929579\n# B 41736619\n# C 57649017\n# D 36530387\n\n# Wykres kolumnowy\nfig, ax = plt.subplots(figsize=(8, 5))\nludnosc.plot(kind='bar', ax=ax, color=['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728'])\nax.set_title('Ludność regionów Edulandii w 2013 roku')\nax.set_xlabel('Region')\nax.set_ylabel('Ludność')\nax.grid(axis='y', linestyle='--', alpha=0.7)\nfor i, v in enumerate(ludnosc):\nax.text(i, v + 500000, f'{v:,}', ha='center', fontsize=10)\nplt.tight_layout()\nplt.savefig('wykres_5_1.png', dpi=150)\nplt.show()\n\n## Sposób 2 - arkusz kalkulacyjny (Excel/LibreOffice Calc)\n\n**Krok 1: Wczytanie pliku**\n- Dane → Z tekstu/CSV → wybierz separator średnik (;).\n- Kolumny: A=nazwa, B=k2013, C=m2013, D=k2014, E=m2014.\n\n**Krok 2: Wyodrębnienie regionu i obliczenie ludności**\n- Kolumna F (region): `=PRAWY(A2; 1)` (ostatni znak nazwy).\n- Kolumna G (ludność 2013): `=B2+C2` (kobiety + mężczyźni).\n\n**Krok 3: Suma po regionie**\n- Komórki I2:I5 (regiony A, B, C, D).\n- J2: `=SUMA.JEŻELI(F2:F51; I2; G2:G51)` → 33929579 dla A.\n- Skopiuj J2:J5.\n\n**Krok 4: Wykres**\n- Zaznacz I1:J5 → Wstaw → Wykres kolumnowy.\n- Tytuł: \"Ludność regionów Edulandii (2013)\".\n- Etykiety osi: Region / Ludność.\n\n## Reference informatyczny - agregacja i wykres\n\n> Reference - Group by + aggregation:\n> - **Pandas**: `df.groupby(kolumna)[wartosc].sum()`.\n> - **Excel**: `SUMA.JEŻELI(zakres_kryteriów; kryterium; zakres_sumy)`.\n> - **SQL**: `SELECT region, SUM(ludnosc) FROM tabela GROUP BY region`.\n> - **Matplotlib bar plot**: `plt.bar(x, y)` lub `pd.Series.plot(kind='bar')`.\n> - **Wymagania CKE wykres**: tytuł, opis osi (xlabel, ylabel), legenda (jeśli > 1 seria), wartości na słupkach (czytelność).\n\n## Schemat oceniania CKE\n\n> Klucz CKE (zadanie 5.1, max 5 pkt):\n> - **5 pkt** - poprawne liczby ORAZ poprawny wykres z opisem osi/legendą\n> - **4 pkt** - poprawne liczby ORAZ wykres bez opisu\n> - **3 pkt** - błędne liczby ALE poprawny wykres z opisem\n> - **2 pkt** - poprawne liczby i błędny wykres, ALBO błędne liczby i wykres bez opisu\n> - **0 pkt** - niepełna lub błędna albo brak. Nie przyznaje się 1 pkt.\n\n## Typowe pułapki\n\n- **Wyodrębnienie regionu**: nazwa typu `w01D` ma region jako 4. znak. `PRAWY(A2; 1)` lub `MID(A2; 4; 1)`.\n- **Sumowanie tylko kobiet ALBO tylko mężczyzn** zamiast obu - kluczowe sumowanie obu.\n- **Pomyłka roku**: użycie kolumn 2014 zamiast 2013.\n- **Wykres bez opisu**: traci punkty (kolejne 1 pkt).\n- **Pomylenie liczby województw w regionach** - nie wszystkie regiony mają tyle samo województw.\n- **Pominięcie nagłówka pliku** - sprawdź czy `kraina.txt` ma wiersz nagłówkowy.\n\n## Złożoność obliczeniowa\n\n- Wczytanie + agregacja: O(N), gdzie N = 50 województw.\n- Stworzenie wykresu: O(R), gdzie R = 4 regiony.\n- **Całkowita: O(N)** (bardzo szybkie).","image":null,"solution_image":null,"topics":null,"page_from":null,"source":"maturazai","answer_source":null,"answer_text_source":null,"solution_source":"maturazai","text_source":"maturazai","source_label":"Informatyka · Matura · maj 2015 (rozszerzona)","subject_label":"Informatyka","category_label":"Matura","text_html":"<p>Zadanie 5. Demografia</p>\n<p>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.</p>\n<p>Przykład:<br>w01D;1415007;1397195;1499070;1481105<br>w02D;1711390;1641773;1522030;1618733<br>w03C;1165105;1278732;1299953;1191621<br>w04D;949065;1026050;688027;723233</p>\n<p>Nazwa zaczyna się literą „w”, dwucyfrowy numer, litera A/B/C/D (region).</p>\n<p>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.</p>","solutions":[{"source":"maturazai","label":"maturazai.pl (AI)","kind":"text","html":"<h4>Poprawna odpowiedź</h4>\n<p>| Region | Ludność 2013 |<br>| A | <strong>33 929 579</strong> |<br>| B | <strong>41 736 619</strong> |<br>| C | <strong>57 649 017</strong> |<br>| D | <strong>36 530 387</strong> |</p>\n<p><strong>Wykres kolumnowy</strong> porównujący ludności regionów A, B, C, D w 2013 z opisem osi (Region / Ludność w mln) i legendą.</p>\n<h4>Sposób 1 - Python (pandas + matplotlib)</h4>\n<p>```python<br>import pandas as pd<br>import matplotlib.pyplot as plt</p>\n<h3>Wczytanie pliku</h3>\n<p>df = pd.read_csv(&#x27;kraina.txt&#x27;, sep=&#x27;;&#x27;, header=None,<br>names=[&#x27;nazwa&#x27;, &#x27;k2013&#x27;, &#x27;m2013&#x27;, &#x27;k2014&#x27;, &#x27;m2014&#x27;])</p>\n<h3>Wyodrębnij region z nazwy (ostatni znak)</h3>\n<p>df[&#x27;region&#x27;] = df[&#x27;nazwa&#x27;].str[-1]</p>\n<h3>Ludność województwa 2013 = kobiety + mężczyźni</h3>\n<p>df[&#x27;lud_2013&#x27;] = df[&#x27;k2013&#x27;] + df[&#x27;m2013&#x27;]</p>\n<h3>Sumuj po regionach</h3>\n<p>ludnosc = df.groupby(&#x27;region&#x27;)[&#x27;lud_2013&#x27;].sum()<br>print(ludnosc)</p>\n<h3>A 33929579</h3>\n<h3>B 41736619</h3>\n<h3>C 57649017</h3>\n<h3>D 36530387</h3>\n<h3>Wykres kolumnowy</h3>\n<p>fig, ax = plt.subplots(figsize=(8, 5))<br>ludnosc.plot(kind=&#x27;bar&#x27;, ax=ax, color=[&#x27;#1f77b4&#x27;, &#x27;#ff7f0e&#x27;, &#x27;#2ca02c&#x27;, &#x27;#d62728&#x27;])<br>ax.set_title(&#x27;Ludność regionów Edulandii w 2013 roku&#x27;)<br>ax.set_xlabel(&#x27;Region&#x27;)<br>ax.set_ylabel(&#x27;Ludność&#x27;)<br>ax.grid(axis=&#x27;y&#x27;, linestyle=&#x27;--&#x27;, alpha=0.7)<br>for i, v in enumerate(ludnosc):<br>ax.text(i, v + 500000, f&#x27;{v:,}&#x27;, ha=&#x27;center&#x27;, fontsize=10)<br>plt.tight_layout()<br>plt.savefig(&#x27;wykres_5_1.png&#x27;, dpi=150)<br>plt.show()</p>\n<h4>Sposób 2 - arkusz kalkulacyjny (Excel/LibreOffice Calc)</h4>\n<p><strong>Krok 1: Wczytanie pliku</strong></p>\n<ul><li>Dane → Z tekstu/CSV → wybierz separator średnik (;).</li><li>Kolumny: A=nazwa, B=k2013, C=m2013, D=k2014, E=m2014.</li></ul>\n<p><strong>Krok 2: Wyodrębnienie regionu i obliczenie ludności</strong></p>\n<ul><li>Kolumna F (region): <code>=PRAWY(A2; 1)</code> (ostatni znak nazwy).</li><li>Kolumna G (ludność 2013): <code>=B2+C2</code> (kobiety + mężczyźni).</li></ul>\n<p><strong>Krok 3: Suma po regionie</strong></p>\n<ul><li>Komórki I2:I5 (regiony A, B, C, D).</li><li>J2: <code>=SUMA.JEŻELI(F2:F51; I2; G2:G51)</code> → 33929579 dla A.</li><li>Skopiuj J2:J5.</li></ul>\n<p><strong>Krok 4: Wykres</strong></p>\n<ul><li>Zaznacz I1:J5 → Wstaw → Wykres kolumnowy.</li><li>Tytuł: &quot;Ludność regionów Edulandii (2013)&quot;.</li><li>Etykiety osi: Region / Ludność.</li></ul>\n<h4>Reference informatyczny - agregacja i wykres</h4>\n<blockquote>Reference - Group by + aggregation:<br>- <strong>Pandas</strong>: <code>df.groupby(kolumna)[wartosc].sum()</code>.<br>- <strong>Excel</strong>: <code>SUMA.JEŻELI(zakres_kryteriów; kryterium; zakres_sumy)</code>.<br>- <strong>SQL</strong>: <code>SELECT region, SUM(ludnosc) FROM tabela GROUP BY region</code>.<br>- <strong>Matplotlib bar plot</strong>: <code>plt.bar(x, y)</code> lub <code>pd.Series.plot(kind=&#x27;bar&#x27;)</code>.<br>- <strong>Wymagania CKE wykres</strong>: tytuł, opis osi (xlabel, ylabel), legenda (jeśli &gt; 1 seria), wartości na słupkach (czytelność).</blockquote>\n<h4>Schemat oceniania CKE</h4>\n<blockquote>Klucz CKE (zadanie 5.1, max 5 pkt):<br>- <strong>5 pkt</strong> - poprawne liczby ORAZ poprawny wykres z opisem osi/legendą<br>- <strong>4 pkt</strong> - poprawne liczby ORAZ wykres bez opisu<br>- <strong>3 pkt</strong> - błędne liczby ALE poprawny wykres z opisem<br>- <strong>2 pkt</strong> - poprawne liczby i błędny wykres, ALBO błędne liczby i wykres bez opisu<br>- <strong>0 pkt</strong> - niepełna lub błędna albo brak. Nie przyznaje się 1 pkt.</blockquote>\n<h4>Typowe pułapki</h4>\n<ul><li><strong>Wyodrębnienie regionu</strong>: nazwa typu <code>w01D</code> ma region jako 4. znak. <code>PRAWY(A2; 1)</code> lub <code>MID(A2; 4; 1)</code>.</li><li><strong>Sumowanie tylko kobiet ALBO tylko mężczyzn</strong> zamiast obu - kluczowe sumowanie obu.</li><li><strong>Pomyłka roku</strong>: użycie kolumn 2014 zamiast 2013.</li><li><strong>Wykres bez opisu</strong>: traci punkty (kolejne 1 pkt).</li><li><strong>Pomylenie liczby województw w regionach</strong> - nie wszystkie regiony mają tyle samo województw.</li><li><strong>Pominięcie nagłówka pliku</strong> - sprawdź czy <code>kraina.txt</code> ma wiersz nagłówkowy.</li></ul>\n<h4>Złożoność obliczeniowa</h4>\n<ul><li>Wczytanie + agregacja: O(N), gdzie N = 50 województw.</li><li>Stworzenie wykresu: O(R), gdzie R = 4 regiony.</li><li><strong>Całkowita: O(N)</strong> (bardzo szybkie).</li></ul>"}]}