{"id":"informatyka-2018-maj-matura-rozszerzona/zad/5.3","paper_id":"informatyka-2018-maj-matura-rozszerzona","number":"5.3","points":3,"ptype":"open","subject":"informatyka","category":"matura","year":2018,"month":"maj","level":"rozszerzona","text":"Kontekst - patrz zadanie 5.1.\n\nUtwórz i podaj zestawienie łącznej liczby metrów sześciennych wody dopływającej do zbiornika retencyjnego w kolejnych miesiącach 2008 roku (od stycznia 2008 do grudnia 2008). Na podstawie zestawienia wykonaj wykres kolumnowy. Pamiętaj o czytelnym opisie wykresu (tytuł wykresu i opisy osi).","answer":null,"answer_text":null,"solution":"## Poprawna odpowiedź\n\n| Miesiąc | Łączny dopływ wody [m³] |\n| 2008-01 | 95 433 |\n| 2008-02 | 94 730 |\n| 2008-03 | 109 439 |\n| 2008-04 | **632 931** (największy) |\n| 2008-05 | 329 203 |\n| 2008-06 | 85 628 |\n| 2008-07 | 166 597 |\n| 2008-08 | 139 747 |\n| 2008-09 | 282 342 |\n| 2008-10 | 170 729 |\n| 2008-11 | 222 440 |\n| 2008-12 | 172 072 |\n\n**Wykres**: kolumnowy, oś X = miesiąc, oś Y = dopływ [m³], tytuł: \"Dopływ wody do zbiornika retencyjnego - 2008 rok\".\n\n## Sposób 1 - agregacja miesięczna\n\n**Idea:** filtruj dane do roku 2008, sumuj wg miesiąca (pozycje 6-7 daty w formacie rrrr-mm-dd).\n\n## Sposób 2 - Python + matplotlib\n\n```python\nfrom collections import defaultdict\nimport matplotlib.pyplot as plt\n\nsumy = defaultdict(int) # \"2008-01\", \"2008-02\",\nwith open('woda.txt', encoding='utf-8') as f:\nfor linia in f:\ncz = linia.strip().split('\\t')\nif len(cz) != 2:\ncontinue\ndata, dop = cz\nif data.startswith('2008'):\nmiesiac = data[:7] # rrrr-mm\nsumy[miesiac] += int(dop)\n\nmiesiace = sorted(sumy.keys())\nwartosci = [sumy[m] for m in miesiace]\n\nfor m, w in zip(miesiace, wartosci):\nprint(f\"{m}: {w}\")\n\nplt.figure(figsize=(12, 6))\nplt.bar(miesiace, wartosci, color='steelblue')\nplt.title('Dopływ wody do zbiornika retencyjnego - 2008 rok')\nplt.xlabel('Miesiąc')\nplt.ylabel('Łączny dopływ wody [m³]')\nplt.xticks(rotation=45)\nplt.grid(axis='y', alpha=0.3)\nplt.tight_layout()\nplt.savefig('wykres_2008.png', dpi=120)\nplt.show()\n\n## Sposób 3 - arkusz kalkulacyjny\n\n**Kroki:**\n1. Otwórz woda.txt (separator TAB).\n2. Kolumna A: data, B: dopływ.\n3. Filtruj A na 2008 (Data > Filtr > Tekst > zawiera \"2008\").\n4. **Tabela przestawna**: wiersze = miesiąc (`=LEWY(A2; 7)` w kolumnie C), wartości = SUMA B.\n5. Posortuj wiersze tabeli przestawnej alfabetycznie po miesiącu.\n6. **Wstaw → Wykres → Kolumnowy** na bazie tabeli.\n7. Dodaj tytuł: \"Dopływ wody - 2008\".\n8. Opisz osie: X = \"Miesiąc\", Y = \"Dopływ [m³]\".\n\n**Wzór alternatywny - bez tabeli przestawnej:**\n- F1:F12 - etykiety miesięcy (\"2008-01\", \"2008-02\", ).\n- G1: `=SUMA.JEŻELI(C:C; F1; B:B)` → 95433.\n- G2 G12 - analogicznie.\n- Zaznacz F1:G12, wstaw wykres kolumnowy.\n\n## Reference informatyczny - agregacja czasowa + wizualizacja\n\n> Reference - Wyciąganie miesiąca:\n> - **Format rrrr-mm-dd**: `data[:7]` = rrrr-mm (Python).\n> - **SQL**: `SUBSTRING(data, 1, 7)` lub `DATE_FORMAT(data, '%Y-%m')`.\n> - **Arkusz**: `=LEWY(A2; 7)` lub `=TEKST(A2; \"RRRR-MM\")`.\n>\n> Reference - Wykres kolumnowy vs słupkowy:\n> - **Kolumnowy** - pionowe słupki, oś X = kategorie. Dla porównania kategorii.\n> - **Słupkowy** - poziome. Gdy nazwy są długie.\n> - **Liniowy** - dla trendów czasowych.\n> - W tym zadaniu kolumnowy jest wymagany przez treść.\n>\n> Reference - Wymagania CKE dla wykresu:\n> - **Tytuł** wykresu.\n> - **Opisy osi** (oś X i Y).\n> - **Legenda** (jeśli wiele serii).\n> - **Skala** czytelna.\n> - **Kolory** kontrastowe.\n\n## Schemat oceniania CKE\n\n> Klucz CKE (zadanie 5.3, max 3 pkt):\n> - **1 pkt** za prawidłowe zestawienie miesięcznych sum (12 wartości)\n> - **1 pkt** za poprawny zakres i typ wykresu (kolumnowy, 12 miesięcy)\n> - **1 pkt** za czytelny opis wykresu (tytuł + opisy obu osi)\n> - **0 pkt** - błędne lub brak\n\n## Typowe pułapki\n\n- **Filtrowanie po LEWY(A;4) = \"2008\"** - uczniowie często zapominają. Bez filtra suma obejmuje wszystkie lata.\n- **Tylko styczeń-listopad** - często ostatnie miesiące pomijane. Sprawdź 12 wierszy.\n- **Brak opisu osi** - strata 1 pkt. Tytuł + opis = obowiązkowe dla CKE.\n- **Wykres liniowy zamiast kolumnowego** - strata 1 pkt.\n- **Niepoprawny zakres** - czasem wstawiana jest tylko kolumna wartości bez etykiet - wykres bez nazw miesięcy.\n- **Suma w niewłaściwych jednostkach** - wynik w m³, NIE w litrach.\n\n## Złożoność obliczeniowa\n\n- Wczytanie 3653 wierszy: O(N).\n- Filtr (data startuje na 2008): O(N).\n- Agregacja po miesiącach: O(N) z O(1) per insert.\n- Wykres: O(12) słupków.\n- **Łącznie: O(N) ≈ 3653 operacji.**","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 2018 (rozszerzona)","subject_label":"Informatyka","category_label":"Matura","text_html":"<p>Kontekst - patrz zadanie 5.1.</p>\n<p>Utwórz i podaj zestawienie łącznej liczby metrów sześciennych wody dopływającej do zbiornika retencyjnego w kolejnych miesiącach 2008 roku (od stycznia 2008 do grudnia 2008). Na podstawie zestawienia wykonaj wykres kolumnowy. Pamiętaj o czytelnym opisie wykresu (tytuł wykresu i opisy osi).</p>","solutions":[{"source":"maturazai","label":"maturazai.pl (AI)","kind":"text","html":"<h4>Poprawna odpowiedź</h4>\n<p>| Miesiąc | Łączny dopływ wody [m³] |<br>| 2008-01 | 95 433 |<br>| 2008-02 | 94 730 |<br>| 2008-03 | 109 439 |<br>| 2008-04 | <strong>632 931</strong> (największy) |<br>| 2008-05 | 329 203 |<br>| 2008-06 | 85 628 |<br>| 2008-07 | 166 597 |<br>| 2008-08 | 139 747 |<br>| 2008-09 | 282 342 |<br>| 2008-10 | 170 729 |<br>| 2008-11 | 222 440 |<br>| 2008-12 | 172 072 |</p>\n<p><strong>Wykres</strong>: kolumnowy, oś X = miesiąc, oś Y = dopływ [m³], tytuł: &quot;Dopływ wody do zbiornika retencyjnego - 2008 rok&quot;.</p>\n<h4>Sposób 1 - agregacja miesięczna</h4>\n<p><strong>Idea:</strong> filtruj dane do roku 2008, sumuj wg miesiąca (pozycje 6-7 daty w formacie rrrr-mm-dd).</p>\n<h4>Sposób 2 - Python + matplotlib</h4>\n<p>```python<br>from collections import defaultdict<br>import matplotlib.pyplot as plt</p>\n<p>sumy = defaultdict(int) # &quot;2008-01&quot;, &quot;2008-02&quot;,<br>with open(&#x27;woda.txt&#x27;, encoding=&#x27;utf-8&#x27;) as f:<br>for linia in f:<br>cz = linia.strip().split(&#x27;\\t&#x27;)<br>if len(cz) != 2:<br>continue<br>data, dop = cz<br>if data.startswith(&#x27;2008&#x27;):<br>miesiac = data[:7] # rrrr-mm<br>sumy[miesiac] += int(dop)</p>\n<p>miesiace = sorted(sumy.keys())<br>wartosci = [sumy[m] for m in miesiace]</p>\n<p>for m, w in zip(miesiace, wartosci):<br>print(f&quot;{m}: {w}&quot;)</p>\n<p>plt.figure(figsize=(12, 6))<br>plt.bar(miesiace, wartosci, color=&#x27;steelblue&#x27;)<br>plt.title(&#x27;Dopływ wody do zbiornika retencyjnego - 2008 rok&#x27;)<br>plt.xlabel(&#x27;Miesiąc&#x27;)<br>plt.ylabel(&#x27;Łączny dopływ wody [m³]&#x27;)<br>plt.xticks(rotation=45)<br>plt.grid(axis=&#x27;y&#x27;, alpha=0.3)<br>plt.tight_layout()<br>plt.savefig(&#x27;wykres_2008.png&#x27;, dpi=120)<br>plt.show()</p>\n<h4>Sposób 3 - arkusz kalkulacyjny</h4>\n<p><strong>Kroki:</strong></p>\n<ol><li>Otwórz woda.txt (separator TAB).</li><li>Kolumna A: data, B: dopływ.</li><li>Filtruj A na 2008 (Data &gt; Filtr &gt; Tekst &gt; zawiera &quot;2008&quot;).</li><li><strong>Tabela przestawna</strong>: wiersze = miesiąc (<code>=LEWY(A2; 7)</code> w kolumnie C), wartości = SUMA B.</li><li>Posortuj wiersze tabeli przestawnej alfabetycznie po miesiącu.</li><li><strong>Wstaw → Wykres → Kolumnowy</strong> na bazie tabeli.</li><li>Dodaj tytuł: &quot;Dopływ wody - 2008&quot;.</li><li>Opisz osie: X = &quot;Miesiąc&quot;, Y = &quot;Dopływ [m³]&quot;.</li></ol>\n<p><strong>Wzór alternatywny - bez tabeli przestawnej:</strong></p>\n<ul><li>F1:F12 - etykiety miesięcy (&quot;2008-01&quot;, &quot;2008-02&quot;, ).</li><li>G1: <code>=SUMA.JEŻELI(C:C; F1; B:B)</code> → 95433.</li><li>G2 G12 - analogicznie.</li><li>Zaznacz F1:G12, wstaw wykres kolumnowy.</li></ul>\n<h4>Reference informatyczny - agregacja czasowa + wizualizacja</h4>\n<blockquote>Reference - Wyciąganie miesiąca:<br>- <strong>Format rrrr-mm-dd</strong>: <code>data[:7]</code> = rrrr-mm (Python).<br>- <strong>SQL</strong>: <code>SUBSTRING(data, 1, 7)</code> lub <code>DATE_FORMAT(data, &#x27;%Y-%m&#x27;)</code>.<br>- <strong>Arkusz</strong>: <code>=LEWY(A2; 7)</code> lub <code>=TEKST(A2; &quot;RRRR-MM&quot;)</code>.<br><br>Reference - Wykres kolumnowy vs słupkowy:<br>- <strong>Kolumnowy</strong> - pionowe słupki, oś X = kategorie. Dla porównania kategorii.<br>- <strong>Słupkowy</strong> - poziome. Gdy nazwy są długie.<br>- <strong>Liniowy</strong> - dla trendów czasowych.<br>- W tym zadaniu kolumnowy jest wymagany przez treść.<br><br>Reference - Wymagania CKE dla wykresu:<br>- <strong>Tytuł</strong> wykresu.<br>- <strong>Opisy osi</strong> (oś X i Y).<br>- <strong>Legenda</strong> (jeśli wiele serii).<br>- <strong>Skala</strong> czytelna.<br>- <strong>Kolory</strong> kontrastowe.</blockquote>\n<h4>Schemat oceniania CKE</h4>\n<blockquote>Klucz CKE (zadanie 5.3, max 3 pkt):<br>- <strong>1 pkt</strong> za prawidłowe zestawienie miesięcznych sum (12 wartości)<br>- <strong>1 pkt</strong> za poprawny zakres i typ wykresu (kolumnowy, 12 miesięcy)<br>- <strong>1 pkt</strong> za czytelny opis wykresu (tytuł + opisy obu osi)<br>- <strong>0 pkt</strong> - błędne lub brak</blockquote>\n<h4>Typowe pułapki</h4>\n<ul><li><strong>Filtrowanie po LEWY(A;4) = &quot;2008&quot;</strong> - uczniowie często zapominają. Bez filtra suma obejmuje wszystkie lata.</li><li><strong>Tylko styczeń-listopad</strong> - często ostatnie miesiące pomijane. Sprawdź 12 wierszy.</li><li><strong>Brak opisu osi</strong> - strata 1 pkt. Tytuł + opis = obowiązkowe dla CKE.</li><li><strong>Wykres liniowy zamiast kolumnowego</strong> - strata 1 pkt.</li><li><strong>Niepoprawny zakres</strong> - czasem wstawiana jest tylko kolumna wartości bez etykiet - wykres bez nazw miesięcy.</li><li><strong>Suma w niewłaściwych jednostkach</strong> - wynik w m³, NIE w litrach.</li></ul>\n<h4>Złożoność obliczeniowa</h4>\n<ul><li>Wczytanie 3653 wierszy: O(N).</li><li>Filtr (data startuje na 2008): O(N).</li><li>Agregacja po miesiącach: O(N) z O(1) per insert.</li><li>Wykres: O(12) słupków.</li><li><strong>Łącznie: O(N) ≈ 3653 operacji.</strong></li></ul>"}]}