{"id":"informatyka-2017-maj-matura-rozszerzona/zad/4.3","paper_id":"informatyka-2017-maj-matura-rozszerzona","number":"4.3","points":3,"ptype":"open","subject":"informatyka","category":"matura","year":2017,"month":"maj","level":"rozszerzona","text":"Kontekst - patrz zadanie 4.1.\n\nWykonaj i podaj zestawienie ilości sprzedanego cukru w kolejnych latach, od roku 2005 do roku 2014 włącznie. Następnie utwórz wykres liniowy ilustrujący sprzedaż cukru w kolejnych latach w podanym okresie. Wyskaluj oś pionową co 5000 kg. Pamiętaj o czytelnym opisie wykresu (tytuł i opis osi).","answer":null,"answer_text":null,"solution":"## Poprawna odpowiedź\n\n**Zestawienie ilości sprzedanego cukru:**\n\n| Rok | Sprzedaż (kg) |\n| 2005 | 27 016 |\n| 2006 | 27 226 |\n| 2007 | 31 720 |\n| 2008 | 36 523 |\n| 2009 | 30 764 |\n| 2010 | 32 521 |\n| 2011 | 23 778 |\n| 2012 | 26 976 |\n| 2013 | 28 419 |\n| 2014 | 35 284 |\n\nWykres liniowy z osią pionową wyskalowaną co 5000 kg, tytułem „Sprzedaż cukru w latach 2005-2014\", osi X opisaną „Rok\" i osi Y opisaną „Sprzedaż [kg]\".\n\n## Sposób 1 - arkusz kalkulacyjny (LibreOffice/Excel)\n\n1. **Wczytaj cukier.txt** - kolumny: A=Data, B=NIP, C=Kg.\n2. **Wydobądź rok** - w D2: `=WARTOŚĆ(LEWY(A2; 4))`.\n3. **Lista lat** w F2:F11 - wartości 2005, 2006, , 2014.\n4. **Suma per rok** w G2: `=SUMA.JEŻELI($D$2:$D$2163; F2; $C$2:$C$2163)`. Skopiuj na G3:G11.\n5. **Wykres liniowy:**\n- Zaznacz F1:G11.\n- Wstaw → Wykres → Linia (z markerami).\n- **Tytuł wykresu:** „Sprzedaż cukru w latach 2005-2014\".\n- **Oś X:** „Rok\".\n- **Oś Y:** „Sprzedaż [kg]\".\n- **Skalowanie osi Y:** kliknij prawym → Właściwości → Skala → Główna jednostka: 5000.\n\n## Sposób 2 - Python z matplotlib\n\n```python\nimport matplotlib.pyplot as plt\nfrom collections import defaultdict\n\nsumy = defaultdict(int)\nwith open('cukier.txt', encoding='utf-8') as f:\nfor linia in f:\ndata, nip, kg = linia.strip().split('\\t')\nsumy[int(data[:4])] += int(kg)\n\nlata = sorted(sumy.keys())\nilosci = [sumy[r] for r in lata]\n\nfor r, k in zip(lata, ilosci):\nprint(r, k)\n\nplt.figure(figsize=(10, 6))\nplt.plot(lata, ilosci, marker='o', linewidth=2)\nplt.title('Sprzedaż cukru w latach 2005-2014')\nplt.xlabel('Rok')\nplt.ylabel('Sprzedaż [kg]')\nplt.yticks(range(0, max(ilosci) + 5000, 5000)) # oś co 5000\nplt.grid(True)\nplt.savefig('wykres_cukier.png', dpi=150, bbox_inches='tight')\nplt.show()\n\nOutput:\n2005 27016\n2006 27226\n2007 31720\n2008 36523\n2009 30764\n2010 32521\n2011 23778\n2012 26976\n2013 28419\n2014 35284\n\n## Sposób 3 - SQL (dla wsparcia obliczenia)\n\nJeśli cukier.txt jest w tabeli `sprzedaz`:\n```sql\nSELECT YEAR(data) AS rok, SUM(kg) AS sprzedaz\nFROM sprzedaz\nGROUP BY YEAR(data)\nORDER BY rok;\n\n## Reference algorytmiczny - wizualizacja danych szeregu czasowego\n\n> Reference - wykres liniowy w arkuszu:\n> - **Wykres liniowy** = punkty połączone liniami, idealny do trendów czasowych.\n> - **Skalowanie osi**: Excel/LibreOffice → Format osi → Główna jednostka (Major unit).\n> - **Czytelność**: tytuł, etykiety osi, jednostki w nawiasach, legenda (jeśli wiele serii).\n> - W matplotlib: `plt.yticks(range(min, max, krok))`.\n\n## Schemat oceniania CKE\n\n> Klucz CKE (zadanie 4.3, max 3 pkt):\n> - **3 pkt** - pełna poprawna odpowiedź, w tym:\n> - 1 pkt - prawidłowe zestawienie liczbowe (10 wartości rocznych)\n> - 1 pkt - prawidłowy dobór danych i typ wykresu (liniowy)\n> - 1 pkt - poprawny opis (tytuł + osie) i wyskalowanie osi pionowej co 5000\n> - **0 pkt** - odpowiedź błędna albo brak\n\n## Typowe pułapki\n\n- **Wybór typu wykresu** - treść WYRAŹNIE wymaga liniowego, nie kolumnowego/słupkowego.\n- **Skalowanie osi Y** - co 5000 kg jest wymaganiem; mile widziane od 0 do max+5000.\n- **Opis osi/wykresu** - bez tytułu i etykiet to tylko 1 pkt zamiast 2-3.\n- **Konwersja roku z daty** - w arkuszu uważać, czy data jest tekstem czy datą; `LEWY(A; 4)` zadziała tylko na tekście, dla daty użyj `ROK(A2)`.\n\n## Złożoność obliczeniowa\n\n- Agregacja: **O(n)** gdzie n = 2162 transakcji.\n- Sortowanie 10 lat: O(10 log 10) = stała.\n- Renderowanie wykresu: O(k) gdzie k = 10 punktów.","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 2017 (rozszerzona)","subject_label":"Informatyka","category_label":"Matura","text_html":"<p>Kontekst - patrz zadanie 4.1.</p>\n<p>Wykonaj i podaj zestawienie ilości sprzedanego cukru w kolejnych latach, od roku 2005 do roku 2014 włącznie. Następnie utwórz wykres liniowy ilustrujący sprzedaż cukru w kolejnych latach w podanym okresie. Wyskaluj oś pionową co 5000 kg. Pamiętaj o czytelnym opisie wykresu (tytuł i opis osi).</p>","solutions":[{"source":"maturazai","label":"maturazai.pl (AI)","kind":"text","html":"<h4>Poprawna odpowiedź</h4>\n<p><strong>Zestawienie ilości sprzedanego cukru:</strong></p>\n<p>| Rok | Sprzedaż (kg) |<br>| 2005 | 27 016 |<br>| 2006 | 27 226 |<br>| 2007 | 31 720 |<br>| 2008 | 36 523 |<br>| 2009 | 30 764 |<br>| 2010 | 32 521 |<br>| 2011 | 23 778 |<br>| 2012 | 26 976 |<br>| 2013 | 28 419 |<br>| 2014 | 35 284 |</p>\n<p>Wykres liniowy z osią pionową wyskalowaną co 5000 kg, tytułem „Sprzedaż cukru w latach 2005-2014&quot;, osi X opisaną „Rok&quot; i osi Y opisaną „Sprzedaż [kg]&quot;.</p>\n<h4>Sposób 1 - arkusz kalkulacyjny (LibreOffice/Excel)</h4>\n<ol><li><strong>Wczytaj cukier.txt</strong> - kolumny: A=Data, B=NIP, C=Kg.</li><li><strong>Wydobądź rok</strong> - w D2: <code>=WARTOŚĆ(LEWY(A2; 4))</code>.</li><li><strong>Lista lat</strong> w F2:F11 - wartości 2005, 2006, , 2014.</li><li><strong>Suma per rok</strong> w G2: <code>=SUMA.JEŻELI(<math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>D</mi></mrow></math>2:<math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>D</mi></mrow></math>2163; F2; <math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>C</mi></mrow></math>2:<math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"inline\"><mrow><mi>C</mi></mrow></math>2163)</code>. Skopiuj na G3:G11.</li><li><strong>Wykres liniowy:</strong></li></ol>\n<ul><li>Zaznacz F1:G11.</li><li>Wstaw → Wykres → Linia (z markerami).</li><li><strong>Tytuł wykresu:</strong> „Sprzedaż cukru w latach 2005-2014&quot;.</li><li><strong>Oś X:</strong> „Rok&quot;.</li><li><strong>Oś Y:</strong> „Sprzedaż [kg]&quot;.</li><li><strong>Skalowanie osi Y:</strong> kliknij prawym → Właściwości → Skala → Główna jednostka: 5000.</li></ul>\n<h4>Sposób 2 - Python z matplotlib</h4>\n<p>```python<br>import matplotlib.pyplot as plt<br>from collections import defaultdict</p>\n<p>sumy = defaultdict(int)<br>with open(&#x27;cukier.txt&#x27;, encoding=&#x27;utf-8&#x27;) as f:<br>for linia in f:<br>data, nip, kg = linia.strip().split(&#x27;\\t&#x27;)<br>sumy[int(data[:4])] += int(kg)</p>\n<p>lata = sorted(sumy.keys())<br>ilosci = [sumy[r] for r in lata]</p>\n<p>for r, k in zip(lata, ilosci):<br>print(r, k)</p>\n<p>plt.figure(figsize=(10, 6))<br>plt.plot(lata, ilosci, marker=&#x27;o&#x27;, linewidth=2)<br>plt.title(&#x27;Sprzedaż cukru w latach 2005-2014&#x27;)<br>plt.xlabel(&#x27;Rok&#x27;)<br>plt.ylabel(&#x27;Sprzedaż [kg]&#x27;)<br>plt.yticks(range(0, max(ilosci) + 5000, 5000)) # oś co 5000<br>plt.grid(True)<br>plt.savefig(&#x27;wykres_cukier.png&#x27;, dpi=150, bbox_inches=&#x27;tight&#x27;)<br>plt.show()</p>\n<p>Output:<br>2005 27016<br>2006 27226<br>2007 31720<br>2008 36523<br>2009 30764<br>2010 32521<br>2011 23778<br>2012 26976<br>2013 28419<br>2014 35284</p>\n<h4>Sposób 3 - SQL (dla wsparcia obliczenia)</h4>\n<p>Jeśli cukier.txt jest w tabeli <code>sprzedaz</code>:<br>```sql<br>SELECT YEAR(data) AS rok, SUM(kg) AS sprzedaz<br>FROM sprzedaz<br>GROUP BY YEAR(data)<br>ORDER BY rok;</p>\n<h4>Reference algorytmiczny - wizualizacja danych szeregu czasowego</h4>\n<blockquote>Reference - wykres liniowy w arkuszu:<br>- <strong>Wykres liniowy</strong> = punkty połączone liniami, idealny do trendów czasowych.<br>- <strong>Skalowanie osi</strong>: Excel/LibreOffice → Format osi → Główna jednostka (Major unit).<br>- <strong>Czytelność</strong>: tytuł, etykiety osi, jednostki w nawiasach, legenda (jeśli wiele serii).<br>- W matplotlib: <code>plt.yticks(range(min, max, krok))</code>.</blockquote>\n<h4>Schemat oceniania CKE</h4>\n<blockquote>Klucz CKE (zadanie 4.3, max 3 pkt):<br>- <strong>3 pkt</strong> - pełna poprawna odpowiedź, w tym:<br>- 1 pkt - prawidłowe zestawienie liczbowe (10 wartości rocznych)<br>- 1 pkt - prawidłowy dobór danych i typ wykresu (liniowy)<br>- 1 pkt - poprawny opis (tytuł + osie) i wyskalowanie osi pionowej co 5000<br>- <strong>0 pkt</strong> - odpowiedź błędna albo brak</blockquote>\n<h4>Typowe pułapki</h4>\n<ul><li><strong>Wybór typu wykresu</strong> - treść WYRAŹNIE wymaga liniowego, nie kolumnowego/słupkowego.</li><li><strong>Skalowanie osi Y</strong> - co 5000 kg jest wymaganiem; mile widziane od 0 do max+5000.</li><li><strong>Opis osi/wykresu</strong> - bez tytułu i etykiet to tylko 1 pkt zamiast 2-3.</li><li><strong>Konwersja roku z daty</strong> - w arkuszu uważać, czy data jest tekstem czy datą; <code>LEWY(A; 4)</code> zadziała tylko na tekście, dla daty użyj <code>ROK(A2)</code>.</li></ul>\n<h4>Złożoność obliczeniowa</h4>\n<ul><li>Agregacja: <strong>O(n)</strong> gdzie n = 2162 transakcji.</li><li>Sortowanie 10 lat: O(10 log 10) = stała.</li><li>Renderowanie wykresu: O(k) gdzie k = 10 punktów.</li></ul>"}]}