Arkusz 2015, matura maj

Zadanie 4.1 (0-3)

Liczby binarne
Liczby binarne
W pliku liczby.txt znajduje się 1000 liczb naturalnych zapisanych binarnie. Każda liczba zapisana jest w osobnym wierszu. Pierwsze pięć wierszy zawiera następujące liczby:
11010100111
11110111111011101
1010100111010100
1101111111111111111111010100101010101001
1010110011001101010011110101010101010111
Każda liczba binarna zawiera co najwyżej 250 cyfr binarnych, co oznacza, że w wielu językach programowania wartości niektórych z tych liczb nie da się zapamiętać w pojedynczej zmiennej typu całkowitoliczbowego, np. w języku C++ w zmiennej typu int.
Napisz program, który da odpowiedzi do poniższych zadań. Odpowiedzi zapisz w pliku
wynik4.txt, a każdą odpowiedź poprzedź numerem oznaczającym odpowiednie zadanie. Podaj, ile liczb z pliku liczby.txt ma w swoim zapisie binarnym więcej zer niż jedynek.
Przykład: Dla zestawu liczb:
101011010011001100111
10001001
1000000
101010011100
100010
wynikiem jest liczba 3 (3 podkreślone liczby mają w swoim zapisie więcej zer niż jedynek).
dane = ""
with open("DANE_PR2/liczby.txt") as f:
	dane = f.readlines()

zwoj = 0
for line in dane:
	line = line.strip()
	z = 0
	j = 0
	for char in line:
		if char == "0":
			z += 1
		elif char == "1":
			j += 1
	if z > j:
		zwoj += 1
print("4.1. Wiecej zer od jedynek ma", str(zwoj), "liczb")
Pobierz rozwiązanie
Wytłumaczenie pojawi się niebawem.

Zadanie 4.2 (0-3)

Liczby binarne
Liczby binarne
W pliku liczby.txt znajduje się 1000 liczb naturalnych zapisanych binarnie. Każda liczba zapisana jest w osobnym wierszu. Pierwsze pięć wierszy zawiera następujące liczby:
11010100111
11110111111011101
1010100111010100
1101111111111111111111010100101010101001
1010110011001101010011110101010101010111
Każda liczba binarna zawiera co najwyżej 250 cyfr binarnych, co oznacza, że w wielu językach programowania wartości niektórych z tych liczb nie da się zapamiętać w pojedynczej zmiennej typu całkowitoliczbowego, np. w języku C++ w zmiennej typu int.
Napisz program, który da odpowiedzi do poniższych zadań. Odpowiedzi zapisz w pliku
wynik4.txt, a każdą odpowiedź poprzedź numerem oznaczającym odpowiednie zadanie. Podaj, ile liczb w pliku liczby.txt jest podzielnych przez 2 oraz ile liczb jest podzielnych przez 8.
Przykład: Dla zestawu liczb:
101011010011001100000 (*), (**)
10001001
100100 (*)
101010010101011011000 (*), (**)
100011
trzy liczby są podzielne przez 2 (*) i dwie liczby są podzielne przez 8 (**).
dane = ""
with open("DANE_PR2/liczby.txt") as f:
	dane = f.readlines()

d8 = 0
d2 = 0
for line in dane:
	line = line.strip()
	if int(line, 2) % 2 == 0:
		d2 += 1
	if int(line, 2) % 8 == 0:
		d8 += 1
print("4.2 Liczb podzielnych przez 2:", d2, "
Liczb podzielnych przez 8:", d8)
Pobierz rozwiązanie
Wytłumaczenie pojawi się niebawem.

Zadanie 4.3 (0-6)

Liczby binarne
Liczby binarne
W pliku liczby.txt znajduje się 1000 liczb naturalnych zapisanych binarnie. Każda liczba zapisana jest w osobnym wierszu. Pierwsze pięć wierszy zawiera następujące liczby:
11010100111
11110111111011101
1010100111010100
1101111111111111111111010100101010101001
1010110011001101010011110101010101010111
Każda liczba binarna zawiera co najwyżej 250 cyfr binarnych, co oznacza, że w wielu językach programowania wartości niektórych z tych liczb nie da się zapamiętać w pojedynczej zmiennej typu całkowitoliczbowego, np. w języku C++ w zmiennej typu int.
Napisz program, który da odpowiedzi do poniższych zadań. Odpowiedzi zapisz w pliku
wynik4.txt, a każdą odpowiedź poprzedź numerem oznaczającym odpowiednie zadanie. Znajdź najmniejszą i największą liczbę w pliku liczby.txt. Jako odpowiedź podaj numery wierszy, w których się one znajdują.
Przykład: Dla zestawu liczb:
101011010011001100111
10001001011101010
1001000
101010011100
1000110
najmniejsza liczba to: 1000110
największa liczba to: 101011010011001100111
Prawidłowa odpowiedź dla powyższego przykładu to: 5, 1.
dane = ""
with open("DANE_PR2/liczby.txt") as f:
	dane = f.readlines()

i = 1
najw = 0
najm = 999999
najw_i = 0
najm_i = 0
for line in dane:
	line = line.strip()
	wd = int(line, 2)
	if wd > najw:
		najw = wd
		najw_i = i
	if wd < najm:
		najm = wd
		najm_i = i
	i += 1
print("4.3. Indeks najmniejszej liczby:", najm_i, "
Indeks najwiekszej liczby:", najw_i)
Pobierz rozwiązanie
Wytłumaczenie pojawi się niebawem.

Zadanie 6.1 (0-2)

Formuła 1
Formuła 1
W następujących plikach zgromadzono dane dotyczące wyścigów samochodowych Formuły 1 z lat 2000–2012. Pierwszy wiersz w każdym z plików jest wierszem nagłówkowym i zawiera nazwy pól.
W pliku Kierowcy.txt każdy wiersz zawiera informacje o kierowcy, rozdzielone średnikami: Id_kierowcy, Nazwisko, Imie, Kraj.
Przykład:
z10;Irvine;Eddie;Irlandia
W pliku Wyscigi.txt są zawarte informacje o rozegranych wyścigach Grand Prix liczonych do klasyfikacji generalnej: Id_wyscigu, Rok, GrandPrix. Sezon jest reprezentowany przez rok (czterocyfrowa liczba), a GrandPrix jest nazwą miejsca, w którym jest rozgrywany wyścig.
Przykład:
w20;2001;Brazylia
W pliku Wyniki.txt każdy wiersz zawiera informacje o punktach zdobytych przez kierowców w poszczególnych wyścigach, rozdzielone średnikami: Id_kierowcy, Punkty, Id_wyscigu.
Przykład:
z42;6;w7
Wykorzystując dane zawarte w plikach Kierowcy.txt, Wyscigi.txt i Wyniki.txt, wykonaj poniższe polecenia, a odpowiedzi poprzedzone numerem oznaczającym podpunkt zapisz w pliku wynik6.txt. Podaj sezon i nazwę wyścigu Grand Prix, w którym Robert Kubica zdobył najwięcej punktów.
SELECT TOP 1 w.rok, w.GrandPrix
FROM Wyscigi AS w INNER JOIN (Kierowcy AS k INNER JOIN Wyniki ON k.Id_kierowcy=Wyniki.Id_kierowcy) ON w.Id_wyscigu=Wyniki.Id_wyscigu
WHERE wyniki.Id_kierowcy="z45"
ORDER BY wyniki.Punkty DESC;

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

Zadanie 6.2 (0-2)

Formuła 1
Formuła 1
W następujących plikach zgromadzono dane dotyczące wyścigów samochodowych Formuły 1 z lat 2000–2012. Pierwszy wiersz w każdym z plików jest wierszem nagłówkowym i zawiera nazwy pól.
W pliku Kierowcy.txt każdy wiersz zawiera informacje o kierowcy, rozdzielone średnikami: Id_kierowcy, Nazwisko, Imie, Kraj.
Przykład:
z10;Irvine;Eddie;Irlandia
W pliku Wyscigi.txt są zawarte informacje o rozegranych wyścigach Grand Prix liczonych do klasyfikacji generalnej: Id_wyscigu, Rok, GrandPrix. Sezon jest reprezentowany przez rok (czterocyfrowa liczba), a GrandPrix jest nazwą miejsca, w którym jest rozgrywany wyścig.
Przykład:
w20;2001;Brazylia
W pliku Wyniki.txt każdy wiersz zawiera informacje o punktach zdobytych przez kierowców w poszczególnych wyścigach, rozdzielone średnikami: Id_kierowcy, Punkty, Id_wyscigu.
Przykład:
z42;6;w7
Wykorzystując dane zawarte w plikach Kierowcy.txt, Wyscigi.txt i Wyniki.txt, wykonaj poniższe polecenia, a odpowiedzi poprzedzone numerem oznaczającym podpunkt zapisz w pliku wynik6.txt. W których z miejsc podanych w plikach rozegrano najmniejszą liczbę wyścigów Grand Prix w latach 2000–2012?
SELECT TOP 1 GrandPrix, COUNT(*)
FROM Wyscigi
GROUP BY GrandPrix
ORDER BY COUNT(*);

Pobierz rozwiązanie
Wytłumaczenie pojawi się niebawem.
Formuła 1
W następujących plikach zgromadzono dane dotyczące wyścigów samochodowych Formuły 1 z lat 2000–2012. Pierwszy wiersz w każdym z plików jest wierszem nagłówkowym i zawiera nazwy pól.
W pliku Kierowcy.txt każdy wiersz zawiera informacje o kierowcy, rozdzielone średnikami: Id_kierowcy, Nazwisko, Imie, Kraj.
Przykład:
z10;Irvine;Eddie;Irlandia
W pliku Wyscigi.txt są zawarte informacje o rozegranych wyścigach Grand Prix liczonych do klasyfikacji generalnej: Id_wyscigu, Rok, GrandPrix. Sezon jest reprezentowany przez rok (czterocyfrowa liczba), a GrandPrix jest nazwą miejsca, w którym jest rozgrywany wyścig.
Przykład:
w20;2001;Brazylia
W pliku Wyniki.txt każdy wiersz zawiera informacje o punktach zdobytych przez kierowców w poszczególnych wyścigach, rozdzielone średnikami: Id_kierowcy, Punkty, Id_wyscigu.
Przykład:
z42;6;w7
Wykorzystując dane zawarte w plikach Kierowcy.txt, Wyscigi.txt i Wyniki.txt, wykonaj poniższe polecenia, a odpowiedzi poprzedzone numerem oznaczającym podpunkt zapisz w pliku wynik6.txt. Klasyfikacja generalna w danym sezonie jest tworzona na podstawie sumy punktów uzyskanych przez kierowców w wyścigach rozegranych w tym sezonie. Utwórz zestawienie zawierające nazwiska i imiona kierowców – zwycięzców klasyfikacji generalnej w sezonach 2000, 2006 i 2012 wraz z liczbami punktów przez nich uzyskanymi.
SELECT Rok, Kierowcy.Imie & " " & Kierowcy.nazwisko, SUM(Punkty)
FROM Wyscigi INNER JOIN (Kierowcy INNER JOIN Wyniki ON Kierowcy.Id_kierowcy=Wyniki.Id_kierowcy) ON Wyscigi.Id_wyscigu=Wyniki.Id_wyscigu
GROUP BY Rok, Kierowcy.Imie & " " & Kierowcy.nazwisko
HAVING Rok=2000 Or Rok=2006 Or Rok=2012;

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

Zadanie 6.4 (0-3)

Formuła 1
Formuła 1
W następujących plikach zgromadzono dane dotyczące wyścigów samochodowych Formuły 1 z lat 2000–2012. Pierwszy wiersz w każdym z plików jest wierszem nagłówkowym i zawiera nazwy pól.
W pliku Kierowcy.txt każdy wiersz zawiera informacje o kierowcy, rozdzielone średnikami: Id_kierowcy, Nazwisko, Imie, Kraj.
Przykład:
z10;Irvine;Eddie;Irlandia
W pliku Wyscigi.txt są zawarte informacje o rozegranych wyścigach Grand Prix liczonych do klasyfikacji generalnej: Id_wyscigu, Rok, GrandPrix. Sezon jest reprezentowany przez rok (czterocyfrowa liczba), a GrandPrix jest nazwą miejsca, w którym jest rozgrywany wyścig.
Przykład:
w20;2001;Brazylia
W pliku Wyniki.txt każdy wiersz zawiera informacje o punktach zdobytych przez kierowców w poszczególnych wyścigach, rozdzielone średnikami: Id_kierowcy, Punkty, Id_wyscigu.
Przykład:
z42;6;w7
Wykorzystując dane zawarte w plikach Kierowcy.txt, Wyscigi.txt i Wyniki.txt, wykonaj poniższe polecenia, a odpowiedzi poprzedzone numerem oznaczającym podpunkt zapisz w pliku wynik6.txt. Dla każdego kraju, którego reprezentanci zdobywali punkty w sezonie 2012, podaj liczbę tych reprezentantów.
SELECT Kraj, Kierowcy.id_kierowcy
FROM Wyscigi INNER JOIN (Kierowcy INNER JOIN Wyniki ON Kierowcy.Id_kierowcy=Wyniki.Id_kierowcy) ON Wyscigi.Id_wyscigu=Wyniki.Id_wyscigu
WHERE Rok=2012
GROUP BY Kraj, Kierowcy.id_kierowcy;

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