# Informatyka — zadanie 6.1

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

- arkusz: Informatyka · Matura · maj 2019 (rozszerzona)
- rok: 2019
- poziom: rozszerzona
- typ: open
- punkty: 1
- działy: Bazy danych

## Treść

Zadanie 6. Perfumeria DlaWas

W plikach: marki.txt, perfumy.txt, sklad.txt opisana jest oferta perfumerii „DlaWas”. W perfumerii dostępne są perfumy różnych marek. Perfumy składają się z kilku składników. Zestaw składników decyduje, do jakiej rodziny zapachów należą perfumy.
Pierwszy wiersz w każdym z plików jest wierszem nagłówkowym i zawiera nazwy pól. Dane w każdym wierszu oddzielone są znakiem tabulacji.

**marki.txt** - pola: id_marki (identyfikator marki), nazwa_m (nazwa marki).
Przykład:
id_marki | nazwa_m
m_1 | Mou De Rosine
m_2 | Mou&Bob

**perfumy.txt** - pola: id_perfum, nazwa_p, id_marki, rodzina_zapachow (nazwa rodziny zapachów), cena (cena perfum).
Przykład:
id_perfum | nazwa_p | id_marki | rodzina_zapachow | cena
p_1 | Ythde | m_1 | orientalna | 241
p_2 | Ythsas | m_1 | kwiatowa | 738

**sklad.txt** - pola: id_perfum, nazwa_skladnika.
Przykład:
id_perfum | nazwa_skladnika
p_1 | chryzantema
p_1 | kwiat irysa

Za pomocą dostępnych narzędzi informatycznych podaj odpowiedzi do poniższych zadań. Odpowiedzi zapisz w pliku wyniki6.txt, a każdą z nich poprzedź numerem odpowiedniego zadania.

Podaj listę wszystkich nazw perfum, których jednym ze składników jest „absolut jasminu”.

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

## Poprawna odpowiedź

**Lista nazw perfum z "absolut jasminu" jako składnikiem:**
Oyal Priather
Ologne D'oud
Uelques FleuE

(Dokładnie 3 perfumy. Nazwy zgodne z kluczem CKE - pochodzą z plików dostarczonych w arkuszu.)

## Sposób 1 - SQL (najprostsze rozwiązanie)

```sql
SELECT DISTINCT p.nazwa_p
FROM perfumy p
INNER JOIN sklad s ON p.id_perfum = s.id_perfum
WHERE s.nazwa_skladnika = 'absolut jasminu';

## Sposób 2 - Python

```python
# Wczytaj składniki
perfumy_z_jasminem = set()
with open('sklad.txt', encoding='utf-8') as f:
f.readline() # nagłówek
for linia in f:
id_perfum, nazwa_skl = linia.strip().split('\t')
if nazwa_skl == 'absolut jasminu':
perfumy_z_jasminem.add(id_perfum)

# Znajdź nazwy perfum
wynik = []
with open('perfumy.txt', encoding='utf-8') as f:
f.readline()
for linia in f:
pola = linia.strip().split('\t')
id_p, nazwa, id_m, rodzina, cena = pola
if id_p in perfumy_z_jasminem:
wynik.append(nazwa)

for n in wynik:
print(n)

## Sposób 3 - arkusz kalkulacyjny

**Krok 1:** w pliku sklad.txt filtruj `nazwa_skladnika = "absolut jasminu"` → otrzymasz listę id_perfum.

**Krok 2:** WYSZUKAJ.PIONOWO każdego id_perfum w perfumy.txt aby uzyskać nazwa_p.

Lub jedna formuła (jeśli sklad.txt ma id_perfum w A, nazwa w B):
=WYSZUKAJ.PIONOWO(A2; perfumy.txt!A:B; 2; 0)
Dla każdego wiersza gdzie B = "absolut jasminu".

Alternatywnie tabela przestawna z filtrowaniem po nazwa_skladnika.

## Reference informatyczny - JOIN z filtrem

> Reference - INNER JOIN w SQL:
> - Łączy wiersze z dwóch tabel po wspólnym kluczu.
> - Tylko wiersze, które pasują w obu tabelach.
> - `ON p.id_perfum = s.id_perfum` - warunek złączenia.
>
> Reference - DISTINCT:
> - Usuwa duplikaty z wyniku.
> - Tutaj nie ma duplikatów (każdy id_perfum występuje raz w perfumy.txt), ale dla pewności.

## Schemat oceniania CKE

> Klucz CKE (zadanie 6.1, max 1 pkt):
> - **1 pkt** - pełna poprawna odpowiedź (3 nazwy)
> - **0 pkt** - błędna lub brak

## Typowe pułapki

- **Wyszukiwanie po `LIKE '%jasmin%'` zamiast `= 'absolut jasminu'`** - może dać dodatkowe składniki typu "olejek jasminowy".
- **Polskie znaki** - "jasminu" vs "jaśminu" - sprawdź dokładną pisownię w danych.
- **JOIN po złym kluczu** - id_perfum vs id_marki.
- **Pominięcie tabeli sklad.txt** - bez niej nie ma jak znaleźć perfum po składniku.

## Złożoność obliczeniowa

- SQL z indeksem na nazwa_skladnika: **O(log n)** dla wyszukiwania + O(k) dla join, k = wynikowe wiersze.
- Bez indeksów: O(n × m).
- Pamięć: O(k) dla zbioru id_perfum.

## Linki

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

## Podobne zadania

- [Zadanie 5.5](https://matura.lol/question/informatyka-2016-maj-matura-stara-podstawowa-2/zad/5.5) — Zadanie 5.5. (2 pkt) Podaj, ile notebooków zamówiono w marcu 2013 roku. Do oceny oddajesz: • plik tekstowy wyniki_5.txt zawierający odpowiedzi do poszczególnych
- [Zadanie 6.1](https://matura.lol/question/informatyka-2019-maj-matura-rozszerzona-2/zad/6.1) — Zadanie 6. Perfumeria DlaWas W plikach: marki.txt, perfumy.txt, sklad.txt opisana jest oferta perfumerii „DlaWas”. W perfumerii dostępne są perfumy różnych mare

_Ostatnia aktualizacja danych: 2026-10-03_
