Arkusz 2021, matura próbna

Zadanie 4.1 (0-4)

Galerie handlowe
Galerie handlowe
Firma Igloo planuje w wybranych miastach Europy wybudować galerie handlowe. W każdej  z planowanych galerii może znajdować się różna liczba lokali handlowych. Wszystkie lokale  handlowe będą miały kształt prostokąta. 
W pliku galerie.txt zapisanych jest 50 wierszy z informacjami dotyczącymi planowanych  galerii. Każdy wiersz w pliku to informacja o jednej galerii. Dane oddzielone są spacją  i zawierają odpowiednio: 
- kod kraju;
- nazwę miasta (nazwy miast nie powtarzają się);
- 70 par liczb (140 liczb) określających wymiary (długość i szerokość w metrach) lokali  handlowych, które znajdować się będą w danej galerii. 
Jeżeli liczba lokali w galerii jest  mniejsza niż 70, to wiersz uzupełniony jest zerami.
Przykład:
NL Amsterdam 8 4 5 12 7 5 5 11 9 4 7 6 … 0 0 0 0 0 0
Do Twojej dyspozycji jest pomocniczy plik galerie_przyklad.txt, zawierający 10 wierszy, który możesz wykorzystać, aby sprawdzić poprawność działania swojego(-ich) programu(-ów).
Napisz program(-y), w wyniku działania którego(-ych) otrzymasz odpowiedzi do podanych zadań. Pliki źródłowe z rozwiązaniem zapisz pod nazwą zgodną z numerem zadania, z rozszerzeniem odpowiadającym użytemu narzędziu informatycznemu.Dla każdego kraju z pliku galerie.txt wyznacz liczbę miast, w których powstaną galerie. 
Wynik zapisz w pliku wynik4_1.txt. W każdym wierszu pliku powinny znajdować się: kod państwa oraz informacja o liczbie miast.
Dla danych z pliku galerie_przyklad.txt prawidłowa odpowiedź to:
H 1
I 2
F 1
GB 1
D 3
NL 1
DK 1
Rozwiązanie zadań w Pythonie:
galerie = []
with open("Dane_2103/galerie.txt") as f:
    for line in f.readlines():
        galerie.append(line.strip()) # strip() oczyszcza ciąg znaków z białych znaków (jak nowa linia 
)


# ZAD 1 #
print("Zadanie 1.")
kraje = {} 
for galeria in galerie:
    kraj = galeria.split()[0] # split() tworzy tablicę z wyrazów rozdzielonych spacjami
    if not kraj in kraje: 
        kraje[kraj] = 1
    else:
        kraje[kraj] += 1

for kraj, ile in kraje.items():
    print(kraj, ile)
Pobierz rozwiązanie

Zadanie 4.2 (0-4)

Galerie handlowe
Galerie handlowe
Firma Igloo planuje w wybranych miastach Europy wybudować galerie handlowe. W każdej  z planowanych galerii może znajdować się różna liczba lokali handlowych. Wszystkie lokale  handlowe będą miały kształt prostokąta. 
W pliku galerie.txt zapisanych jest 50 wierszy z informacjami dotyczącymi planowanych  galerii. Każdy wiersz w pliku to informacja o jednej galerii. Dane oddzielone są spacją  i zawierają odpowiednio: 
- kod kraju;
- nazwę miasta (nazwy miast nie powtarzają się);
- 70 par liczb (140 liczb) określających wymiary (długość i szerokość w metrach) lokali  handlowych, które znajdować się będą w danej galerii. 
Jeżeli liczba lokali w galerii jest  mniejsza niż 70, to wiersz uzupełniony jest zerami.
Przykład:
NL Amsterdam 8 4 5 12 7 5 5 11 9 4 7 6 … 0 0 0 0 0 0
Do Twojej dyspozycji jest pomocniczy plik galerie_przyklad.txt, zawierający 10 wierszy, który możesz wykorzystać, aby sprawdzić poprawność działania swojego(-ich) programu(-ów).
Napisz program(-y), w wyniku działania którego(-ych) otrzymasz odpowiedzi do podanych zadań. Pliki źródłowe z rozwiązaniem zapisz pod nazwą zgodną z numerem zadania, z rozszerzeniem odpowiadającym użytemu narzędziu informatycznemu.a) Oblicz całkowitą powierzchnię handlową każdej galerii (jako sumę powierzchni wszystkich  lokali w danej galerii) oraz liczbę lokali. 
Wyniki zapisz w pliku wynik4_2a.txt. W każdym wierszu pliku wynikowego powinny się znaleźć: nazwa miasta, powierzchnia galerii znajdującej się w danym mieście oraz liczba lokali, rozdzielone znakiem spacji. Strona 3 z 9
Dla danych z pliku galerie_przyklad.txt prawidłowa odpowiedź to:
Budapeszt 3598 64
Neapol 3352 48
Marsylia 3444 56
Leeds 2952 44
Frankfurt 3515 57
Genua 3386 56
Dortmund 3697 57
Rotterdam 3184 49
Dusseldorf 3737 63
Kopenhaga 3765 60
b) Podaj nazwę miasta z galerią o największej powierzchni całkowitej oraz nazwę miasta  z galerią o najmniejszej powierzchni całkowitej. Jest dokładnie jedno miasto z galerią o największej powierzchni i jedno z galerią o najmniejszej powierzchni.
Wyniki zapisz w pliku wynik4_2b.txt. W pliku wynikowym powinny znaleźć się nazwy  miast wraz z powierzchniami galerii.
Prawidłowa odpowiedź dla danych pliku galerie_przyklad.txt:
Kopenhaga 3765
Leeds 2952
Rozwiązanie zadań w Pythonie:
print("Zadanie 2. a)")
pow_galerii = {}
for galeria in galerie:
    miasto = galeria.split()[1]
    powierzchnie = galeria.split()[2:]
    lokale = 0
    calk_pow = 0
    for i in range(0, 140, 2): # iteracja od zera do 140 krokami po 2, np. 0, 2, 4...
        if int(powierzchnie[i]) == 0:
            break
        calk_pow += int(powierzchnie[i])*int(powierzchnie[i+1])
        lokale += 1
    pow_galerii[miasto] = calk_pow
    print(miasto, calk_pow, lokale)

# ZAD 2 B) #
# items() zwraca słownik w postaci [(klucz1, wartość1), (klucz2, wartość2)...]
# key=lambda lokal: lokal[1] oznacza, że za wartość do sortowania wybieramy wartość lokalu
# a wartością lokalu u nas jest jego powierzchnia całkowita (wyliczyliśmy to w podpunkcie A)
print("-------------------")
print("Zadanie 2. b)")
najw = sorted(pow_galerii.items(), key=lambda lokal: lokal[1])[0] 
najm = sorted(pow_galerii.items(), key=lambda lokal: lokal[1])[-1]
print(najw[0], najw[1])
print(najm[0], najm[1])
Pobierz rozwiązanie

Zadanie 4.3 (0-4)

Galerie handlowe
Galerie handlowe
Firma Igloo planuje w wybranych miastach Europy wybudować galerie handlowe. W każdej  z planowanych galerii może znajdować się różna liczba lokali handlowych. Wszystkie lokale  handlowe będą miały kształt prostokąta. 
W pliku galerie.txt zapisanych jest 50 wierszy z informacjami dotyczącymi planowanych  galerii. Każdy wiersz w pliku to informacja o jednej galerii. Dane oddzielone są spacją  i zawierają odpowiednio: 
- kod kraju;
- nazwę miasta (nazwy miast nie powtarzają się);
- 70 par liczb (140 liczb) określających wymiary (długość i szerokość w metrach) lokali  handlowych, które znajdować się będą w danej galerii. 
Jeżeli liczba lokali w galerii jest  mniejsza niż 70, to wiersz uzupełniony jest zerami.
Przykład:
NL Amsterdam 8 4 5 12 7 5 5 11 9 4 7 6 … 0 0 0 0 0 0
Do Twojej dyspozycji jest pomocniczy plik galerie_przyklad.txt, zawierający 10 wierszy, który możesz wykorzystać, aby sprawdzić poprawność działania swojego(-ich) programu(-ów).
Napisz program(-y), w wyniku działania którego(-ych) otrzymasz odpowiedzi do podanych zadań. Pliki źródłowe z rozwiązaniem zapisz pod nazwą zgodną z numerem zadania, z rozszerzeniem odpowiadającym użytemu narzędziu informatycznemu.Powiemy, że dwa lokale są tego samego rodzaju, jeżeli ich powierzchnia jest taka sama. 
W którym mieście powstanie galeria z największą liczbą różnych rodzajów lokali (jest jedno  takie miasto), a w którym powstanie galeria z najmniejszą liczbą różnych rodzajów lokali (jest  jedno takie miasto)? Podaj te miasta oraz liczby różnych rodzajów lokali w tych miastach.
Wynik zapisz w pliku wynik4_3.txt. W każdym z dwóch wierszy pliku powinny znajdować  się nazwa miasta oraz liczba różnych rodzajów lokali w tym mieście.
Prawidłowa odpowiedź dla danych pliku galerie_przyklad.txt:
Dusseldorf 34
Genua 23
Rozwiązanie zadań w Pythonie:
print("Zadanie 3.")
unik_lok_gal = {} # unikalne lokale galerii
for galeria in galerie:
    miasto = galeria.split()[1]
    powierzchnie = galeria.split()[2:]
    unikalne_lokale = set() # set przechowuje tylko unikalne wartości
    for i in range(0, 140, 2):
        if int(powierzchnie[i]) == 0:
            break
        pow_lokalu = int(powierzchnie[i])*int(powierzchnie[i+1])
        unikalne_lokale.add(pow_lokalu)
    unik_lok_gal[miasto] = len(unikalne_lokale) # ile jest unikalnych lokali

najw = sorted(unik_lok_gal.items(), key=lambda lokal: lokal[1])[0] 
najm = sorted(unik_lok_gal.items(), key=lambda lokal: lokal[1])[-1]
print(najw[0], najw[1])
print(najm[0], najm[1])
Pobierz rozwiązanie

Zadanie 6.4 (0-2)

Wyścigi Kolarskie
Wyścigi Kolarskie
Pewien kibic zapisywał sobie w plikach tekstowych informacje o zawodnikach startujących  w corocznym wyścigu kolarskim wraz z wynikami ich startów.
Wszystkie dane w plikach zawierają wiersze nagłówkowe z nazwami kolumn, natomiast dane  w wierszach są rozdzielone znakami tabulacji.
W pliku grupy.txt znajdują się opisy grup kolarskich, których zawodnicy uczestniczyli  w przynajmniej jednym wyścigu. Każdy wiersz zawiera kolejno:
- kod_grupy – trzyznakowy kod grupy kolarskiej,
- nazwa – nazwę grupy kolarskiej,
- siedziba – państwo, w którym grupa ma swoją siedzibę.
Fragment pliku grupy.txt:
kod_grupy nazwa siedziba
AGR Agritubel Francja
ALM Ag2r-La Mondiale Francja
W pliku zawodnicy.txt znajdują się dane kolarzy, którzy uczestniczyli w przynajmniej  jednym z wyścigów. Każdy wiersz zawiera kolejno:
- id_zawodnika – identyfikator zawodnika (liczba całkowita),
- imie – imię zawodnika,
- nazwisko – nazwisko zawodnika,
- data – datę urodzenia zawodnika w formacie rrrr-mm-dd.
Fragment pliku zawodnicy.txt:
id_zawodnika imie nazwisko data
1 Janier Acevedo 1985-12-06
2 Mario Aerts 1974-12-31
W pliku startujacy.txt znajdują się dane kolarzy związane z ich startami w kolejnych edycjach wyścigu, każdy wiersz zawiera kolejno:
- id_startu – identyfikator startu (liczba całkowita), 
- rok – rok edycji wyścigu,
- id_zawodnika – identyfikator zawodnika (liczba całkowita), 
- kod_grupy – trzyznakowy kod grupy kolarskiej,
- obywatel_kraju – kraj, którego obywatelem był zawodnik podczas danej edycji  wyścigu.
Fragment pliku startujacy.txt:
id_startu rok id_zawodnika kod_grupy obywatel_kraju
1 2008 176 TNK Australia
2 2008 2 TNK BelgiaStrona 7 z 9
EINP-R2_200
W pliku czasy.txt znajdują się wyniki tylko tych kolarzy, którzy ukończyli wyścig. Każdy wiersz zawiera kolejno:
- id_startu – identyfikator startu (liczba całkowita), 
- czas – czas osiągnięty przez zawodnika z uwzględnieniem wszystkich bonifikat zapisany w formacie mm:ss:ms.
Fragment pliku czasy.txt:
id_startu czas
1 87:53:50
2 88:41:50
Korzystając z dostępnych narzędzi informatycznych, wykonaj poniższe polecenia. Odpowiedzi  zapisz w pliku wyniki6.txt, a każdy podpunkt poprzedź odpowiadającym mu numerem zadania.
W którym roku nie ukończyła wyścigu największa grupa zawodników? Podaj rok oraz liczbę zawodników, którzy nie ukończyli wyścigu (jest tylko jeden taki rok).

Zadanie 6.5 (0-3)

Wyścigi Kolarskie
Wyścigi Kolarskie
Pewien kibic zapisywał sobie w plikach tekstowych informacje o zawodnikach startujących  w corocznym wyścigu kolarskim wraz z wynikami ich startów.
Wszystkie dane w plikach zawierają wiersze nagłówkowe z nazwami kolumn, natomiast dane  w wierszach są rozdzielone znakami tabulacji.
W pliku grupy.txt znajdują się opisy grup kolarskich, których zawodnicy uczestniczyli  w przynajmniej jednym wyścigu. Każdy wiersz zawiera kolejno:
- kod_grupy – trzyznakowy kod grupy kolarskiej,
- nazwa – nazwę grupy kolarskiej,
- siedziba – państwo, w którym grupa ma swoją siedzibę.
Fragment pliku grupy.txt:
kod_grupy nazwa siedziba
AGR Agritubel Francja
ALM Ag2r-La Mondiale Francja
W pliku zawodnicy.txt znajdują się dane kolarzy, którzy uczestniczyli w przynajmniej  jednym z wyścigów. Każdy wiersz zawiera kolejno:
- id_zawodnika – identyfikator zawodnika (liczba całkowita),
- imie – imię zawodnika,
- nazwisko – nazwisko zawodnika,
- data – datę urodzenia zawodnika w formacie rrrr-mm-dd.
Fragment pliku zawodnicy.txt:
id_zawodnika imie nazwisko data
1 Janier Acevedo 1985-12-06
2 Mario Aerts 1974-12-31
W pliku startujacy.txt znajdują się dane kolarzy związane z ich startami w kolejnych edycjach wyścigu, każdy wiersz zawiera kolejno:
- id_startu – identyfikator startu (liczba całkowita), 
- rok – rok edycji wyścigu,
- id_zawodnika – identyfikator zawodnika (liczba całkowita), 
- kod_grupy – trzyznakowy kod grupy kolarskiej,
- obywatel_kraju – kraj, którego obywatelem był zawodnik podczas danej edycji  wyścigu.
Fragment pliku startujacy.txt:
id_startu rok id_zawodnika kod_grupy obywatel_kraju
1 2008 176 TNK Australia
2 2008 2 TNK BelgiaStrona 7 z 9
EINP-R2_200
W pliku czasy.txt znajdują się wyniki tylko tych kolarzy, którzy ukończyli wyścig. Każdy wiersz zawiera kolejno:
- id_startu – identyfikator startu (liczba całkowita), 
- czas – czas osiągnięty przez zawodnika z uwzględnieniem wszystkich bonifikat zapisany w formacie mm:ss:ms.
Fragment pliku czasy.txt:
id_startu czas
1 87:53:50
2 88:41:50
Korzystając z dostępnych narzędzi informatycznych, wykonaj poniższe polecenia. Odpowiedzi  zapisz w pliku wyniki6.txt, a każdy podpunkt poprzedź odpowiadającym mu numerem zadania.
W jednej grupie mogą startować zawodnicy, którzy pochodzą z różnych państw. Bywa też tak, że zawodnicy jednej grupy pochodzą z tego samego kraju.
Utwórz zestawienie zawierające dla każdego roku liczbę takich grup, w których wszyscy  zawodnicy byli obywatelami jednego kraju.
Podaj rok, w którym grup z wszystkimi zawodnikami z jednego kraju było najwięcej, oraz podaj  nazwy tych grup. Jest tylko jeden taki rok.

Zadanie 6.6 (0-2)

Wyścigi Kolarskie
Wyścigi Kolarskie
Pewien kibic zapisywał sobie w plikach tekstowych informacje o zawodnikach startujących  w corocznym wyścigu kolarskim wraz z wynikami ich startów.
Wszystkie dane w plikach zawierają wiersze nagłówkowe z nazwami kolumn, natomiast dane  w wierszach są rozdzielone znakami tabulacji.
W pliku grupy.txt znajdują się opisy grup kolarskich, których zawodnicy uczestniczyli  w przynajmniej jednym wyścigu. Każdy wiersz zawiera kolejno:
- kod_grupy – trzyznakowy kod grupy kolarskiej,
- nazwa – nazwę grupy kolarskiej,
- siedziba – państwo, w którym grupa ma swoją siedzibę.
Fragment pliku grupy.txt:
kod_grupy nazwa siedziba
AGR Agritubel Francja
ALM Ag2r-La Mondiale Francja
W pliku zawodnicy.txt znajdują się dane kolarzy, którzy uczestniczyli w przynajmniej  jednym z wyścigów. Każdy wiersz zawiera kolejno:
- id_zawodnika – identyfikator zawodnika (liczba całkowita),
- imie – imię zawodnika,
- nazwisko – nazwisko zawodnika,
- data – datę urodzenia zawodnika w formacie rrrr-mm-dd.
Fragment pliku zawodnicy.txt:
id_zawodnika imie nazwisko data
1 Janier Acevedo 1985-12-06
2 Mario Aerts 1974-12-31
W pliku startujacy.txt znajdują się dane kolarzy związane z ich startami w kolejnych edycjach wyścigu, każdy wiersz zawiera kolejno:
- id_startu – identyfikator startu (liczba całkowita), 
- rok – rok edycji wyścigu,
- id_zawodnika – identyfikator zawodnika (liczba całkowita), 
- kod_grupy – trzyznakowy kod grupy kolarskiej,
- obywatel_kraju – kraj, którego obywatelem był zawodnik podczas danej edycji  wyścigu.
Fragment pliku startujacy.txt:
id_startu rok id_zawodnika kod_grupy obywatel_kraju
1 2008 176 TNK Australia
2 2008 2 TNK BelgiaStrona 7 z 9
EINP-R2_200
W pliku czasy.txt znajdują się wyniki tylko tych kolarzy, którzy ukończyli wyścig. Każdy wiersz zawiera kolejno:
- id_startu – identyfikator startu (liczba całkowita), 
- czas – czas osiągnięty przez zawodnika z uwzględnieniem wszystkich bonifikat zapisany w formacie mm:ss:ms.
Fragment pliku czasy.txt:
id_startu czas
1 87:53:50
2 88:41:50
Korzystając z dostępnych narzędzi informatycznych, wykonaj poniższe polecenia. Odpowiedzi  zapisz w pliku wyniki6.txt, a każdy podpunkt poprzedź odpowiadającym mu numerem zadania.
Czasami zawodnicy zmieniają obywatelstwo i reprezentują wtedy inny kraj. Podaj imiona  i nazwiska zawodników, którzy zmieniali obywatelstwo, oraz nazwy państw, które reprezentowali.