Arkusz 2019, matura maj

Zadanie 1.1 (0-5)

Ulubione liczby
Ulubione liczby
Małgosia i Jaś lubią liczby. Małgosia lubi liczby nieparzyste, a Jaś lubi liczby parzyste. Każde z dzieci zapisało po kilka spośród swoich ulubionych liczb na jednej wspólnej kartce. Najpierw Małgosia zapisała wszystkie swoje liczby, a potem Jaś dopisał swoje.Napisz algorytm (w postaci listy kroków, w pseudokodzie lub w wybranym języku programowania), który dla danego ciągu liczb zapisanych przez dzieci znajdzie pierwszą liczbę zapisaną przez Jasia. Zakładamy, że każde z dzieci zapisało co najmniej jedną liczbę.
Przy ocenie będzie brana pod uwagę złożoność czasowa Twojego algorytmu. Maksymalną liczbę punktów uzyskasz za algorytm o złożoności lepszej niż liniowa.
Uwaga: W zapisie algorytmu możesz wykorzystać tylko operacje arytmetyczne (dodawanie, odejmowanie, mnożenie, dzielenie, dzielenie całkowite, reszta z dzielenia), instrukcje porównania, instrukcje sterujące i przypisania do zmiennych lub samodzielnie napisane funkcje, wykorzystujące wyżej wymienione operacje.
Specyfikacja:
Dane:
- n – liczba całkowita większa od 1
- A[1..n] – tablica zawierająca ciąg n liczb zapisanych przez dzieci (najpierw wszystkie liczby nieparzyste, a potem wszystkie liczby parzyste)
Wynik:
- w – pierwsza od lewej parzysta liczba w tablicy A

Przykład:
Dane:
n = 10
A[1..n] {ሼ5, 99, 3, 7, 111, 13, 4, 24, 4, 8}
Wynik:
w = 4
Rozpiszmy sobie jakie dane mamy i co musimy z nimi zrobić:
- otrzymujemy tablicę zawierającą najpierw liczby nieparzyste (zapisane przez Małgosię), a potem parzyste (Jasia)
- należy znaleźć pierwszą liczbę, którą zapisał Jaś (pierwszą liczbę parzystą), a więc potrzebujemy algorytm na wyszukiwanie
- trzeba wykorzystać taki algorytm, którego złożoność jest lepsza niż liniowa, żeby uzyskać maksymalną liczbę punktów (za liniowy otrzymamy 3 z 5 możliwych punktów)

Algorytm liniowy na rozwiązanie tego zadania jest bardzo prosty: tworzymy pętlę, która wykona się n razy. Za każdym wykonaniem sprawdzamy, czy wartość A[i] modulo 2 jest równa 0 (modulo to operacja otrzymywania reszty z dzielenia, np. dla 7 mod 2 = 1, 4 mod 2 = 0, a 10 mod 4 = 2). W ten sposób dowiadujemy się, czy dana liczba jest parzysta: jeśli jest, to zapisał ją Jaś, więc pierwsza otrzymana w ten sposób liczba da nam wynik.
Algorytm ten wygląda tak:
dla i = 1..n:
  jeżeli A[i] mod 2==0:
    w=A[i]
    zakończ wykonywanie pętliBardzo prosty, prawda? 😃
Otrzymamy za niego jednak jedynie 60% możliwych do zdobycia punktów.

Aby otrzymać wszystkie punkty, musimy zastosować jeden z szybszych algorytmów, jak na przykład "wyszukiwanie binarne".
W tym poście tłumaczyliśmy sobie, jak funkcjonuje ten sposób przeszukiwania. Cytując: "Cały myk polega na tym, że tablica jest dostarczona w formie posortowanej (np. 1, 2, 4, 10...), a więc jeśli wybierzemy jakąkolwiek liczbę z tej tablicy i nie będzie ona równała się szukanej, to wiemy, po której stronie jej szukać!
Dla przykładu:
mamy tablicę A w której zapisujemy elementy [3, 5, 8, 9, 11]. Chcemy dowiedzieć się, czy 5. zawiera się w tej liście.
W tym celu poszukamy element środkowy tablicy (zmienna s) - ma on indeks 3 (numerujemy tablice od 1) i pod nim zapisana jest liczba 8. 5 na pewno jest różne od 8. I jest też od niej mniejsze. Dzięki temu, że tablica jest posortowana wiemy, że wystarczy przeszukać resztę liczb, których indeks jest mniejszy od indeksu liczby 8., czyli przeszukujemy teraz tablicę w zakresie [3, 5]!
Drastycznie zmniejszyliśmy liczbę potencjalnych kandydatów, którzy mogliby stanowić szukaną, a więc tym samym algorytm znajdzie ją szybciej! 😎"
Tutaj musimy jednak lekko zmodyfikować ten algorytm: zamiast kryteriów: mniejsze po lewej, większe po prawej, zastosujemy: nieparzyste po lewej, parzyste po prawej! A więc, jeśli napotkamy liczbę nieparzystą, to wiemy, że liczba parzysta może sie znajdować się co najwyżej pod indeksem tej liczby nieparzystej+1, ponieważ po lewej stronie od tego indeksu (włącznie), znajdują się jedynie liczby zapisane przez Małgosię.
Możemy to zapisać w postaci takiego pseudokodu:
przypisz do początkowy_indeks: 1
przypisz do końcowy_indeks: n
dopóki początkowy_indeks < końcowy_indeks wykonuj:
  środek = (początkowy_indeks+końcowy_indeks) dziel całk. przez 2
  jeżeli A[środek] mod 2 == 0:
    przypisz do końcowy_indeks: środek
  w przeciwnym wypadku:
    przypisz do początkowy_indeks: środek+1
przypisz do w: A[początkowy_indeks]To wszystko! Tłumacząc co tu się dzieje po kolei:
a) najpierw tworzymy dwie zmienne: początkowy indeks i końcowy, służą one nam za wskaźniki, gdzie mamy szukać pierwszej (!) parzystej liczby, którą zapisał Jaś
b) tworzymy pętlę, która będzie się wykonywać, dopóki początkowy indeks i końcowy będą się różnić od siebie (gdy będą takie same, oznacza to, że pod tym indeksem znajduje się poszukiwana przez nas liczba)
c) wyznaczamy indeks środkowy tablicy: dzieli on ją na pół, przez co w następnych linijkach możemy sprawdzić, czy dalej mamy kierować się ku prawej czy lewej stronie w poszukiwaniach liczby
d) jeśli liczba pośrodku jest parzysta, to wiemy, że albo może być to pierwsza liczba zapisana przez Jasia, albo jedna z następnych, więc zawężamy naszą dziedzinę do właśnie indeksu tej liczby
e) jeśli jednak jest nieparzysta, to po na pewno możemy wykluczyć wszystkie liczby znajdujące się po lewej stronie od tego indeksu, włącznie z indeksem, bo szukamy liczby parzystej, a nie nieparzystej
f) jeśli zakończy się wykonywanie pętli dopóki, to zarówno początkowy_indeks, jak i końcowy_indeks zawiera pierwszą liczbę zapisaną przez Jasia! zapisujemy więc to do zmiennej w, według polecenia

i w ten właśnie sposób uzyskujemy rozwiązanie! 🥳 Zachęcam do spróbowania napisania tego algorytmu w postaci któregoś z języków programowania, aby lepiej utrwalić wiedzę oraz spróbować rozwiązać ten problem na inne sposoby! (na przykład wykorzystując rekurencję)

Zadanie 4.1 (0-3)

Liczby
Liczby
W pliku liczby.txt zapisano 500 liczb całkowitych dodatnich po jednej w każdym wierszu.
Każda liczba jest z zakresu od 1 do 100 000. Napisz program(-y) dający(-e) odpowiedzi do poniższych zadań. Zapisz uzyskane odpowiedzi w pliku wyniki4.txt, poprzedzając każdą z nich numerem odpowiedniego zadania.
Uwaga: Plik przyklad.txt zawiera przykładowe dane spełniające warunki zadania.
Odpowiedzi dla danych z tego pliku są podane pod treściami zadań. Podaj, ile z podanych liczb jest potęgami liczby 3 (czyli liczbami postaci 1 = 3^0, 3 = 3^1, 9 = 3^2 itd.).
Dla pliku przyklad.txt odpowiedź wynosi 2.
Rozwiązanie zadań w Pythonie:
dane = ""
with open("DANE_PR2\liczby.txt") as f:
	dane = f.readlines()

powers = [3**i for i in range(0, 11)]
am = 0
for line in dane:
	line = line.strip()
	if int(line) in powers:
		am += 1

print("4.1.", am)
Pobierz rozwiązanie
Wytłumaczenie pojawi się niebawem.

Zadanie 4.2 (0-3)

Liczby
Liczby
W pliku liczby.txt zapisano 500 liczb całkowitych dodatnich po jednej w każdym wierszu.
Każda liczba jest z zakresu od 1 do 100 000. Napisz program(-y) dający(-e) odpowiedzi do poniższych zadań. Zapisz uzyskane odpowiedzi w pliku wyniki4.txt, poprzedzając każdą z nich numerem odpowiedniego zadania.
Uwaga: Plik przyklad.txt zawiera przykładowe dane spełniające warunki zadania.
Odpowiedzi dla danych z tego pliku są podane pod treściami zadań. Silnią liczby naturalnej k większej od 0 nazywamy wartość iloczynu 1·2·…·k i oznaczamy przez k!.
Przyjmujemy, że 0!=1. Zatem mamy:
0! = 1,
1! = 1,
2! = 1·2 = 2,
3! = 1·2·3 = 6,
4! = 1·2·3·4 = 24 itd.
Dowolną liczbę naturalną możemy rozbić na cyfry, a następnie policzyć sumę silni jej cyfr. Na przykład dla liczby 343 mamy 3! + 4! + 3! = 6 + 24 + 6 = 36. Podaj, w kolejności ich występowania w pliku liczby.txt, wszystkie liczby, które są równe sumie silni swoich cyfr.
W pliku przyklad.txt znajduje się jedna taka liczba: 145 (1!+4!+5! =1+24+120 =145).
Rozwiązanie zadań w Pythonie:
def silnia(n):
	if n == 0:
		return 1
	return n*silnia(n-1)

dane = ""
with open("DANE_PR2\liczby.txt") as f:
	dane = f.readlines()
g = []
for line in dane:
	line = line.strip()
	if int(line) == sum([silnia(int(n)) for n in line]):
		g.append(int(line))

print("4.2.", g)
Pobierz rozwiązanie
Wytłumaczenie pojawi się niebawem.
Liczby
W pliku liczby.txt zapisano 500 liczb całkowitych dodatnich po jednej w każdym wierszu.
Każda liczba jest z zakresu od 1 do 100 000. Napisz program(-y) dający(-e) odpowiedzi do poniższych zadań. Zapisz uzyskane odpowiedzi w pliku wyniki4.txt, poprzedzając każdą z nich numerem odpowiedniego zadania.
Uwaga: Plik przyklad.txt zawiera przykładowe dane spełniające warunki zadania.
Odpowiedzi dla danych z tego pliku są podane pod treściami zadań. W pliku liczby.txt znajdź najdłuższy ciąg liczb występujących kolejno po sobie i taki, że największy wspólny dzielnik ich wszystkich jest większy od 1 (innymi słowy: istnieje taka liczba całkowita większa od 1, która jest dzielnikiem każdej z tych liczb).
Jako odpowiedź podaj wartość pierwszej liczby w takim ciągu, długość ciągu oraz największą liczbę całkowitą, która jest dzielnikiem każdej liczby w tym ciągu. W pliku z danymi jest tylko jeden taki ciąg o największej długości.
Uwaga: Możesz skorzystać z zależności NWD(a, b, c) = NWD(NWD(a, b), c). 

Przykład:
Dla liczb 3, 7, 4, 6, 10, 2, 5 odpowiedzią jest 4 (pierwsza liczba ciągu), 4 (długość ciągu) i 2 (największy wspólny dzielnik), natomiast dla liczb 5, 70, 28, 42, 98, 1 odpowiedzią jest 70 (pierwsza liczba ciągu), 4 (długość ciągu) i 14 (największy wspólny dzielnik).
Odpowiedź dla pliku przyklad.txt: pierwsza liczba ciągu 90, długość 5, największy wspólny dzielnik 10.
Rozwiązanie zadań w Pythonie:
def dzielniki(n):
	dziel = []
	for i in range(1, n//2):
		if n%i == 0:
			dziel.append(n//i)
	return dziel

ciag = []
for line in dane:
	line = line.strip()
	ciag.append(int(line))

ws_dziel = [] # wszystkie dzielniki
for line in dane:
	line = line.strip()
	ws_dziel.append(dzielniki(int(line)))


naj_dl = 0 # najwieksza dlugosc
pierw = None # pierwszy dzielnik
nwd = None
for i in range(0, len(ws_dziel)): # dzielniki
	for dziel in ws_dziel[i]: # dzielnik
		dl = 0
		for j in range(i, len(ws_dziel)):
			if dziel in ws_dziel[j]:
				dl += 1
			else:
				break
			if dl > naj_dl:
				nwd = dziel
				pierw = ciag[i]
				naj_dl = dl

print("4.3.", pierw, naj_dl, nwd)
Pobierz rozwiązanie
Wytłumaczenie pojawi się niebawem.

Zadanie 5.1 (0-2)

Chmury
Chmury
Naukowcy śledzą zmiany pogody na odległej planecie. Chmury występujące na niebie tej planety podzielono na dwie kategorie, nazwane przez analogię do ziemskich cirrusami (C) i stratusami (S). W każdej z kategorii chmury są klasyfikowane względem wielkości od 1 do 5.
Mamy zatem chmury dziesięciu rodzajów: C1, C2, C3, C4 i C5 oraz S1, S2, S3, S4 i S5. Na tej planecie w jednym dniu mogą występować chmury tylko jednego rodzaju.
W każdym z 500 kolejnych dni stacja badawcza umiejscowiona na planecie mierzyła temperaturę w stopniach oraz określała rodzaj chmur. Dane te zawarte są w kolejnych wierszach pliku pogoda.txt. Każdy wiersz pliku pogoda.txt zawiera kolejno:
• numer dnia (od 1 do 500),
• zmierzoną temperaturę (z dokładnością do jednego miejsca po przecinku, temperatura nigdy nie spada poniżej zera),
• wielkość opadu, jaki miał miejsce tego dnia (w milimetrach, zaokrąglony do liczby całkowitej),
• kategorię chmur (C, S lub 0 – jeśli dzień był bezchmurny),
• wielkość chmur (od 1 do 5 lub 0 – jeśli dzień był bezchmurny).
Dane oddzielone są średnikami, pierwszy wiersz jest wierszem nagłówkowym.
Przykład:
Dzien;Temperatura;Opad;Kategoria_chmur;Wielkosc_chmur
1;19;0;0;0
2;22;1;C;1
3;23,6;4;C;1
W dniu 301. kamera na stacji badawczej się zepsuła i od tego dnia stacja raportowała wszystkie dni jako „bezchmurne”, temperatura i opady jednak dalej były poprawnie mierzone. 
Za pomocą dostępnych narzędzi informatycznych podaj odpowiedzi do poniższych zadań.
Odpowiedzi zapisz w pliku wyniki5.txt, poprzedzając każdą z nich numerem odpowiedniego zadania. Podaj liczby dni, w których:
Podaj liczbę dni o temperaturze większej lub równej 20 stopni i jednocześnie o opadzie mniejszym lub równym 5 mm.
Pobierz rozwiązanie
Wytłumaczenie pojawi się niebawem.

Zadanie 5.2 (0-2)

Chmury
Chmury
Naukowcy śledzą zmiany pogody na odległej planecie. Chmury występujące na niebie tej planety podzielono na dwie kategorie, nazwane przez analogię do ziemskich cirrusami (C) i stratusami (S). W każdej z kategorii chmury są klasyfikowane względem wielkości od 1 do 5.
Mamy zatem chmury dziesięciu rodzajów: C1, C2, C3, C4 i C5 oraz S1, S2, S3, S4 i S5. Na tej planecie w jednym dniu mogą występować chmury tylko jednego rodzaju.
W każdym z 500 kolejnych dni stacja badawcza umiejscowiona na planecie mierzyła temperaturę w stopniach oraz określała rodzaj chmur. Dane te zawarte są w kolejnych wierszach pliku pogoda.txt. Każdy wiersz pliku pogoda.txt zawiera kolejno:
• numer dnia (od 1 do 500),
• zmierzoną temperaturę (z dokładnością do jednego miejsca po przecinku, temperatura nigdy nie spada poniżej zera),
• wielkość opadu, jaki miał miejsce tego dnia (w milimetrach, zaokrąglony do liczby całkowitej),
• kategorię chmur (C, S lub 0 – jeśli dzień był bezchmurny),
• wielkość chmur (od 1 do 5 lub 0 – jeśli dzień był bezchmurny).
Dane oddzielone są średnikami, pierwszy wiersz jest wierszem nagłówkowym.
Przykład:
Dzien;Temperatura;Opad;Kategoria_chmur;Wielkosc_chmur
1;19;0;0;0
2;22;1;C;1
3;23,6;4;C;1
W dniu 301. kamera na stacji badawczej się zepsuła i od tego dnia stacja raportowała wszystkie dni jako „bezchmurne”, temperatura i opady jednak dalej były poprawnie mierzone. 
Za pomocą dostępnych narzędzi informatycznych podaj odpowiedzi do poniższych zadań.
Odpowiedzi zapisz w pliku wyniki5.txt, poprzedzając każdą z nich numerem odpowiedniego zadania. Znajdź najdłuższy ciąg kolejnych dni, w których temperatura zmierzona każdego dnia jest wyższa niż temperatura dnia poprzedniego. Jest tylko jeden taki ciąg. Podaj numer pierwszego i numer ostatniego dnia w takim ciągu.
Na przykład dla danych:
dzień temperatura
34 3,7
35 3,4
36 3,5
37 3,6
38 3,7
39 3,5
pierwszym dniem ciągu spełniającym warunek zadania jest dzień 36, a ostatnim – 38.
Pobierz rozwiązanie
Wytłumaczenie pojawi się niebawem.

Zadanie 5.3 (0-3)

Chmury
Chmury
Naukowcy śledzą zmiany pogody na odległej planecie. Chmury występujące na niebie tej planety podzielono na dwie kategorie, nazwane przez analogię do ziemskich cirrusami (C) i stratusami (S). W każdej z kategorii chmury są klasyfikowane względem wielkości od 1 do 5.
Mamy zatem chmury dziesięciu rodzajów: C1, C2, C3, C4 i C5 oraz S1, S2, S3, S4 i S5. Na tej planecie w jednym dniu mogą występować chmury tylko jednego rodzaju.
W każdym z 500 kolejnych dni stacja badawcza umiejscowiona na planecie mierzyła temperaturę w stopniach oraz określała rodzaj chmur. Dane te zawarte są w kolejnych wierszach pliku pogoda.txt. Każdy wiersz pliku pogoda.txt zawiera kolejno:
• numer dnia (od 1 do 500),
• zmierzoną temperaturę (z dokładnością do jednego miejsca po przecinku, temperatura nigdy nie spada poniżej zera),
• wielkość opadu, jaki miał miejsce tego dnia (w milimetrach, zaokrąglony do liczby całkowitej),
• kategorię chmur (C, S lub 0 – jeśli dzień był bezchmurny),
• wielkość chmur (od 1 do 5 lub 0 – jeśli dzień był bezchmurny).
Dane oddzielone są średnikami, pierwszy wiersz jest wierszem nagłówkowym.
Przykład:
Dzien;Temperatura;Opad;Kategoria_chmur;Wielkosc_chmur
1;19;0;0;0
2;22;1;C;1
3;23,6;4;C;1
W dniu 301. kamera na stacji badawczej się zepsuła i od tego dnia stacja raportowała wszystkie dni jako „bezchmurne”, temperatura i opady jednak dalej były poprawnie mierzone. 
Za pomocą dostępnych narzędzi informatycznych podaj odpowiedzi do poniższych zadań.
Odpowiedzi zapisz w pliku wyniki5.txt, poprzedzając każdą z nich numerem odpowiedniego zadania. Dla pierwszych 300 dni pomiaru oblicz, z dokładnością do dwóch miejsc po przecinku, średni opad dla każdego rodzaju chmur (kategoria + wielkość, czyli C1, C2, C3, C4, C5, S1, S2, S3, S4, S5). Przedstaw wyniki na wykresie kolumnowym, pamiętając o czytelnym opisie wykresu.
Pobierz rozwiązanie
Wytłumaczenie pojawi się niebawem.
Chmury
Naukowcy śledzą zmiany pogody na odległej planecie. Chmury występujące na niebie tej planety podzielono na dwie kategorie, nazwane przez analogię do ziemskich cirrusami (C) i stratusami (S). W każdej z kategorii chmury są klasyfikowane względem wielkości od 1 do 5.
Mamy zatem chmury dziesięciu rodzajów: C1, C2, C3, C4 i C5 oraz S1, S2, S3, S4 i S5. Na tej planecie w jednym dniu mogą występować chmury tylko jednego rodzaju.
W każdym z 500 kolejnych dni stacja badawcza umiejscowiona na planecie mierzyła temperaturę w stopniach oraz określała rodzaj chmur. Dane te zawarte są w kolejnych wierszach pliku pogoda.txt. Każdy wiersz pliku pogoda.txt zawiera kolejno:
• numer dnia (od 1 do 500),
• zmierzoną temperaturę (z dokładnością do jednego miejsca po przecinku, temperatura nigdy nie spada poniżej zera),
• wielkość opadu, jaki miał miejsce tego dnia (w milimetrach, zaokrąglony do liczby całkowitej),
• kategorię chmur (C, S lub 0 – jeśli dzień był bezchmurny),
• wielkość chmur (od 1 do 5 lub 0 – jeśli dzień był bezchmurny).
Dane oddzielone są średnikami, pierwszy wiersz jest wierszem nagłówkowym.
Przykład:
Dzien;Temperatura;Opad;Kategoria_chmur;Wielkosc_chmur
1;19;0;0;0
2;22;1;C;1
3;23,6;4;C;1
W dniu 301. kamera na stacji badawczej się zepsuła i od tego dnia stacja raportowała wszystkie dni jako „bezchmurne”, temperatura i opady jednak dalej były poprawnie mierzone. 
Za pomocą dostępnych narzędzi informatycznych podaj odpowiedzi do poniższych zadań.
Odpowiedzi zapisz w pliku wyniki5.txt, poprzedzając każdą z nich numerem odpowiedniego zadania. Profesor George Nubis przedstawił teorię, według której chmury określonej wielkości i kategorii rozwijają się w następujący sposób:
• jeśli w danym dniu nie ma chmur, nazajutrz na pewno pojawią się chmury o wielkości 1,
• chmury po trzech dniach samoczynnie przechodzą w chmury o wyższym numerze, aż do numeru 5,
• chmury o wielkości 5 zanikają wtedy, gdy spadnie w ciągu dnia co najmniej 20 mm deszczu, a wówczas następny dzień jest bezchmurny,
• powstanie chmur kategorii C lub S zależy od temperatury powietrza w dniu ich tworzenia się. Jeśli temperatura w dniu pojawienia się chmur jest nie mniejsza niż 10 stopni, to powstają chmury kategorii C (o wielkości 1), w przeciwnym wypadku – chmury kategorii S (o wielkości 1).
Uwaga: Przez pierwszych 20 dni teoria zgodziła się dokładnie z obserwacjami. Użyj tej informacji, aby sprawdzić swoje obliczenia.
Załóż, że chmury rozwijałyby się przez cały czas (500 dni) według teorii profesora i że dzień pierwszy był bezchmurny (wielkość chmur 0), a następnie:
a) podaj liczbę dni (spośród wszystkich 500) z chmurami wielkości 0, 1, 2, 3, 4 i 5 – dla każdej wielkości oddzielnie (przyjmij, że wielkość opadu w danym dniu jest taka, jaką zapisano w pliku z danymi),
b) dla pierwszych 300 dni pomiaru podaj, ile wśród nich było takich, w których teorię profesora Nubisa dotyczącą wielkości chmur potwierdzały odczyty z kamery,
c) dla pierwszych 300 dni pomiaru podaj, ile wśród nich było takich, w których teorię profesora Nubisa dotyczącą kategorii chmur potwierdzały odczyty z kamery.
Pobierz rozwiązanie
Wytłumaczenie pojawi się niebawem.

Zadanie 6.1 (0-1)

Perfumeria DlaWas
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.
W pliku marki.txt każdy wiersz zawiera informacje o markach firm produkujących perfumy:
id_marki – identyfikator marki
nazwa_m – nazwa marki
Przykład:
id_marki nazwa_m
m_1 Mou De Rosine
m_2 Mou&Bob
W pliku perfumy.txt każdy wiersz zawiera informacje o perfumach:
id_perfum – identyfikator perfum
nazwa_p – nazwa perfum
id_marki – identyfikator marki tych perfum
rodzina_zapachow – nazwa rodziny zapachów, do której należą perfumy
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
W pliku sklad.txt kolejne wiersze zawierają informacje o składzie perfum:
id_perfum – identyfikator perfum
nazwa_skladnika – nazwa składnika
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”
SELECT Perfumy.nazwa_p
FROM Perfumy INNER JOIN Sklad ON Perfumy.id_perfum = Sklad.id_perfum
WHERE Sklad.nazwa_skladnika="absolut jasminu";

Pobierz rozwiązanie
Wytłumaczenie pojawi się niebawem.

Zadanie 6.2 (0-3)

Perfumeria DlaWas
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.
W pliku marki.txt każdy wiersz zawiera informacje o markach firm produkujących perfumy:
id_marki – identyfikator marki
nazwa_m – nazwa marki
Przykład:
id_marki nazwa_m
m_1 Mou De Rosine
m_2 Mou&Bob
W pliku perfumy.txt każdy wiersz zawiera informacje o perfumach:
id_perfum – identyfikator perfum
nazwa_p – nazwa perfum
id_marki – identyfikator marki tych perfum
rodzina_zapachow – nazwa rodziny zapachów, do której należą perfumy
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
W pliku sklad.txt kolejne wiersze zawierają informacje o składzie perfum:
id_perfum – identyfikator perfum
nazwa_skladnika – nazwa składnika
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”
SELECT rodzina_zapachow, cena, nazwa_p
FROM Perfumy
WHERE rodzina_zapachow & cena IN
(SELECT rodzina_zapachow & MIN(cena) AS 'cena minimalna'
FROM Perfumy
GROUP BY rodzina_zapachow);

Pobierz rozwiązanie

Zadanie 6.3 (0-3)

Perfumeria DlaWas
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.
W pliku marki.txt każdy wiersz zawiera informacje o markach firm produkujących perfumy:
id_marki – identyfikator marki
nazwa_m – nazwa marki
Przykład:
id_marki nazwa_m
m_1 Mou De Rosine
m_2 Mou&Bob
W pliku perfumy.txt każdy wiersz zawiera informacje o perfumach:
id_perfum – identyfikator perfum
nazwa_p – nazwa perfum
id_marki – identyfikator marki tych perfum
rodzina_zapachow – nazwa rodziny zapachów, do której należą perfumy
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
W pliku sklad.txt kolejne wiersze zawierają informacje o składzie perfum:
id_perfum – identyfikator perfum
nazwa_skladnika – nazwa składnika
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ę różnych rodzin zapachów. Dla każdej rodziny podaj jej nazwę, cenę najtańszych perfum z tej rodziny i ich nazwę
SELECT DISTINCT Marki.nazwa_m
FROM Perfumy INNER JOIN Marki ON Marki.id_marki=Perfumy.id_marki
WHERE Perfumy.id_marki Not In (SELECT Perfumy.id_marki FROM Sklad INNER JOIN Perfumy ON Perfumy.id_perfum = Sklad.id_perfum WHERE Sklad.nazwa_skladnika LIKE "*paczula*")
ORDER BY Marki.nazwa_m;

Pobierz rozwiązanie

Zadanie 6.4 (0-3)

Perfumeria DlaWas
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.
W pliku marki.txt każdy wiersz zawiera informacje o markach firm produkujących perfumy:
id_marki – identyfikator marki
nazwa_m – nazwa marki
Przykład:
id_marki nazwa_m
m_1 Mou De Rosine
m_2 Mou&Bob
W pliku perfumy.txt każdy wiersz zawiera informacje o perfumach:
id_perfum – identyfikator perfum
nazwa_p – nazwa perfum
id_marki – identyfikator marki tych perfum
rodzina_zapachow – nazwa rodziny zapachów, do której należą perfumy
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
W pliku sklad.txt kolejne wiersze zawierają informacje o składzie perfum:
id_perfum – identyfikator perfum
nazwa_skladnika – nazwa składnika
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.Ceny wszystkich perfum marki Mou De Rosine z rodziny o nazwie „orientalno-drzewna” zostały obniżone o 15%. Podaj listę zawierającą wszystkie nazwy takich perfum i ich ceny po obniżce. Listę posortuj niemalejąco według ceny.
SELECT nazwa_p AS Nazwa, cena*0.85 AS Cena_promocyjna
FROM Perfumy AS p INNER JOIN Marki AS m ON p.id_marki=m.id_marki
WHERE nazwa_m="Mou De Rosine" And rodzina_zapachow="orientalno-drzewna"
ORDER BY Cena;

Pobierz rozwiązanie

Zadanie 6.5 (0-2)

Perfumeria DlaWas
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.
W pliku marki.txt każdy wiersz zawiera informacje o markach firm produkujących perfumy:
id_marki – identyfikator marki
nazwa_m – nazwa marki
Przykład:
id_marki nazwa_m
m_1 Mou De Rosine
m_2 Mou&Bob
W pliku perfumy.txt każdy wiersz zawiera informacje o perfumach:
id_perfum – identyfikator perfum
nazwa_p – nazwa perfum
id_marki – identyfikator marki tych perfum
rodzina_zapachow – nazwa rodziny zapachów, do której należą perfumy
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
W pliku sklad.txt kolejne wiersze zawierają informacje o składzie perfum:
id_perfum – identyfikator perfum
nazwa_skladnika – nazwa składnika
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.Istnieją marki, których wszystkie perfumy należą do tylko jednej rodziny zapachów. Podaj listę wszystkich nazw takich marek. Lista powinna zawierać nazwy marek i nazwy odpowiednich rodzin zapachów.
SELECT DISTINCT Marki.nazwa_m, Perfumy.rodzina_zapachow
FROM Perfumy INNER JOIN Marki ON Perfumy.id_marki=Marki.id_marki
WHERE Perfumy.id_marki IN (SELECT id_marki FROM (SELECT DISTINCT id_marki, rodzina_zapachow FROM Perfumy) GROUP BY id_marki HAVING COUNT(Rodzina_zapachow) = 1);

Pobierz rozwiązanie