autok202410_em_DK.py
1    # ----------------------------------------------------------------------------------------------
2    # 2024.10.22 emelt szintű digitális kultúra érettségi programozási feladat
3    # ----------------------------------------------------------------------------------------------
4    autok = []      # mátrix (listák listája)
5    # ----------------------------------------------------------------------------------------------
6    # 1. Olvassa be és tárolja el a további feldolgozáshoz a jeladas.txt állomány tartalmát!
7    # ----------------------------------------------------------------------------------------------
8    fbe = open('jeladas.txt','r')
9    for sor in fbe:
10       adatsor = sor.strip().split('\t')
11       adatsor[1:] = map(int, adatsor[1:])
12       autok.append(adatsor)
13   fbe.close()
14   # ----------------------------------------------------------------------------------------------
15   # 2. Állapítsa meg, hogy milyen időpontban történt a legutolsó jeladás, és írja a képernyőre
16   #    az időpontot, valamint az utoljára jelet adó autó rendszámát!
17   # ----------------------------------------------------------------------------------------------
18   print('2. feladat:')
19   utolso_adat = autok[-1]
20   ora = utolso_adat[1]
21   perc = utolso_adat[2]
22   rendszam = utolso_adat[0]
23   print(f'Az utolsó jeladás időpontja {ora}:{perc}, a jármű rendszáma {rendszam}')
24   # ----------------------------------------------------------------------------------------------
25   # 3. Írja ki a bemeneti állományban elsőként szereplő jármű rendszámát, valamint azt, hogy
26   #    milyen időpontokban adott jelzést! Az időpontokat óra:perc formátumban, szóközzel
27   #    elválasztva, egy sorban jelenítse meg!
28   # ----------------------------------------------------------------------------------------------
29   print('3. feladat:')
30   elso = autok[0]
31   print(f'Az első jármű: {elso[0]}')
32   print('Jeladásainak időpontjai:', end = ' ')
33   for auto in autok:
34       if auto[0] == elso[0]:
35           print(f'{auto[1]}:{auto[2]}', end = ' ')
36   print()
37   # ----------------------------------------------------------------------------------------------
38   # 4. Kérje be a felhasználótól egy időpont óra és perc értékét, és adja meg, hogy hány jeladás
39   #    történt az adott időpontban! Ha nem történt jeladás, akkor 0-t írjon ki!
40   # ----------------------------------------------------------------------------------------------
41   print('4. feladat:')
42   ora = int(input('Kérem, adja meg az órát: '))           # 6
43   perc = int(input('Kérem, adja meg a percet: '))         # 54
44   jeladasok_szama = 0
45   for auto in autok:
46       if auto[1] == ora and auto[2] == perc:
47           jeladasok_szama += 1
48   print(f'A jeladások száma: {jeladasok_szama}')
49   # ----------------------------------------------------------------------------------------------
50   # 5. Állapítsa meg, hogy mennyi az adatok szerint a legnagyobb sebesség, amellyel egy jármű
51   #    a jeladáskor haladt, illetve adja meg az összes autó rendszámát, ami haladt ilyen
52   #    sebességgel! Amennyiben egy jármű többször is haladt a legnagyobb sebességgel, akkor a 
53   #    rendszámát többször is megjelenítheti. A rendszámokat egy sorban, szóközzel elválasztva 
54   #    jelenítse meg a minta szerint!
55   # ----------------------------------------------------------------------------------------------
56   print('5. feladat:')
57   # max_sebesseg = max(autok, key = lambda auto:auto[-1])[-1]
58   max_sebesseg = 0
59   for auto in autok:
60       if auto[-1] > max_sebesseg:
61           max_sebesseg = auto[-1]       
62   print(f'A legnagyobb sebesség km/h: {max_sebesseg}')        # 154
63   print('A járművek:', end = ' ')
64   for auto in autok:
65       if auto[-1] == max_sebesseg:
66           print(auto[0], end = ' ')
67   print()
68   # ----------------------------------------------------------------------------------------------
69   # 6. Kérje be a felhasználótól egy jármű rendszámát, és jelenítse meg a jármű jeladásainak
70   #    időpontját és az adott rendszámú autó távolságát az útszakasz kezdetétől! A bevezető
71   #    példában az első jármű esetén a 6:04-kor a jármű távolsága az útszakasz kezdetétől 0,0 km,
72   #    míg 6:14-kor 15,8 km, mivel a jármű az eltelt 10 perc (10/60 óra) alatt 95 km/h-val haladt.
73   #    A kimenetet a mintának megfelelőn alakítsa ki, a távolságot minden esetben egy
74   #    tizedesjegyre kerekítve írja ki km mértékegységben! Ha nem szerepel a bekért rendszámmal
75   #    jármű, akkor azt egy rövid mondatban jelezze a felhasználónak!
76   # ----------------------------------------------------------------------------------------------
77   def eltelt_ido(elozo, au):
78       return (au[1] * 60 + au[2]) - (elozo[0] * 60 + elozo[1])
79   
80   print('6. feladat:')
81   rendszam = input('Kérem, adja meg a rendszámot: ')          # ZVJ-638
82   elso = True
83   for auto in autok:
84       if auto[0] == rendszam:
85           if not elso:
86               ido = eltelt_ido(elozo_jeladas, auto)
87               tavolsag += elozo_jeladas[-1] * (ido / 60)                      # s = v * t (fizika)
88           else:
89               tavolsag = 0.0
90               elso = False
91           elozo_jeladas = (auto[1], auto[2],auto[3])
92           print(f'{auto[1]}:{auto[2]} {tavolsag:.1f} km')
93   if elso:
94       print('Nincs ilyen rendszám!')
95   # ----------------------------------------------------------------------------------------------
96   # 7. Készítsen egy ido.txt szöveges állományt, amelynek mindegyik sorában egy-egy jármű 
97   # rendszáma, illetve első és utolsó jeladásának óra és perc értéke szerepeljen! 
98   # Az állományban minden jármű pontosan egyszer forduljon elő tetszőleges sorrendben!
99   # ----------------------------------------------------------------------------------------------
100  fki = open('ido.txt','w')
101  rendszamok = set()
102  for auto in autok:
103      rendszamok.add(auto[0])
104  for rendszam in rendszamok:
105      elso = True
106      for auto in autok:
107          if auto[0] == rendszam:
108              if elso:
109                  sor = rendszam + ' ' + str(auto[1]) + ' ' + str(auto[2])
110                  elso = False
111              else:
112                  vege = ' ' + str(auto[1]) + ' ' + str(auto[2])
113      sor += vege
114      print(sor, file = fki)
115  fki.close()
116  
117