#Szakaszsebesség-ellenőrzés - 2022. május 16. (idegennyelvűeknek)

#----------------------------------------------------------------------------
# 1. Olvassa be és tárolja el a meresek.txt állomány adatait! 
#----------------------------------------------------------------------------
meresek=[]                  #ez lesz a mátrixunk, ebben tároljuk az adatokat

fbe=open('meresek.txt','r')

for sor in fbe:                   #OXZ648 8 4 44 861 8 11 53 432
    sor=sor.strip().split()
    for i in range(1,len(sor)):
        sor[i]=int(sor[i])        #jobb, ha számként kezeljük az időadatokat
    meresek.append(sor)           #['OXZ648', 8, 4, 44, 861, 8, 11, 53, 432]

fbe.close()

#----------------------------------------------------------------------------
# 2. Írja ki a képernyőre, hogy hány jármű adatait rögzítették a mérés során!
#----------------------------------------------------------------------------
print('2. feladat')
#minden jármű csak egyszer haladt át az ellenőrzési szakaszon
print(f'A mérés során {len(meresek)} jármű adatait rögzítették.')

#----------------------------------------------------------------------------
# 3. Határozza meg a rendelkezésre álló adatok segítségével, hogy 9 óra előtt
#    hány jármű haladt át a szakasz végpontján! A kapott értéket írja ki a
#    képernyőre!

#----------------------------------------------------------------------------
print('\n3. feladat')
#megszámlálás
db=0
for meres in meresek:
    if meres[5]<9:     #9 óra előtt (az 6. adat a "szakaszvég" órája)
        db+=1

print(f'9 óra előtt {db} jármű haladt el a végponti mérőnél.')

#----------------------------------------------------------------------------
# 4. Kérjen be a felhasználótól egy óra, perc értéket!
#    a. Határozza meg, hogy abban a percben hány jármű haladt el a kezdő
#       méréspontnál! Ha az adott percben nem haladt el jármű a méréspontnál,
#       akkor a 0 értéket jelenítse meg!
#    b. Számítsa ki a forgalomsűrűséget, amely a megadott időpontban kezdődő
#       percben (pl.: ha a megadott óra perc 08:09 volt, akkor
#       08:09:00,000-08:09:59,999 között) az útszakaszon lévő járművek száma
#       és az útszakasz hosszának hányadosa. Az értéket tizedes tört alakban
#       jelenítse meg.
#----------------------------------------------------------------------------
print('\n4. feladat')

#ha ragaszkodunk a minta szerinti egysoros adatbekéréshez:
ido=input('Adjon meg egy óra és perc értéket! ').strip().split()   #pl.: 8 20
ora=int(ido[0])
perc=int(ido[1])
db=0
for meres in meresek:
    #csak a kezdőpontot kell nézni
    if meres[1]==ora and meres[2]==perc:
        db+=1

print(f'\ta. A kezdeti méréspontnál elhaladt járművek száma: {db}')

def valto(o,p,mp,emp):      #ezredmásodpercre vált
    return o*60*60*1000+p*60*1000+mp*1000+emp

db=0
kezdo_ido=valto(ora,perc,0,0)
vege_ido=valto(ora,perc,59,999)

for meres in meresek:
    #most nemcsak a kezdőpontot kell nézni
    kezd=valto(meres[1],meres[2],meres[3],meres[4])
    vege=valto(meres[5],meres[6],meres[7],meres[8])
    if kezd<=vege_ido and vege>=kezdo_ido:          #ezt gondoljuk végig...!
        db+=1
    
print(f'\tb. A forgalomsűrűség: {db/10}')

#----------------------------------------------------------------------------
# 5. Mekkora volt a legnagyobb átlagsebességgel haladó járműnek a sebessége,
#    és hány járművet hagyott le a mért szakasz végére? Amennyiben több
#    legnagyobb átlagsebesség érték van, akkor elég az egyiket kiírnia.
#    Az autó rendszámát, az átlagsebességet egész számként és a lehagyott
#    járművek számát jelenítse meg!
#----------------------------------------------------------------------------
print('\n5. feladat')
print('A legnagyobb sebességgel haladó jármű')
#szélsőértékkeresés és megszámlálás a 6. feladatot itt érdemes megoldani
max_sebesseg=0
gyorshajto=0    #6. feladat
fki=open('buntetes.txt','w')    #7. feladat is mehet itt, szerintem...
for meres in meresek:
    kezd=valto(meres[1],meres[2],meres[3],meres[4])  #másoltam a 4. feladatból
    vege=valto(meres[5],meres[6],meres[7],meres[8])  #akár ott is megcsinálhatnánk
    osszido=vege-kezd                                #ezredmásodpercben
    sebesseg=(10000/(osszido/1000))*3.6         #m/s, váltani kell km/h-ra
    if sebesseg>max_sebesseg:
        max_sebesseg=sebesseg
        rendszam=meres[0]
        max_kezd=kezd           #ezek a lehagyottak számához kellenek
        max_vege=vege

    #--- 6. feladat ---- ha már megvan a sebesség!!!
    if sebesseg>90:
        gyorshajto+=1

    #--- 7. feladat ---- 
    if sebesseg>104 and sebesseg<=121:      #7. feladathoz
        print(meres[0]+'\t'+str(int(sebesseg))+' km/h\t30000 Ft',file=fki)
    if sebesseg>121 and sebesseg<=136:
        print(meres[0]+'\t'+str(int(sebesseg))+' km/h\t45000 Ft',file=fki)
    if sebesseg>136 and sebesseg<=151:
        print(meres[0]+'\t'+str(int(sebesseg))+' km/h\t60000 Ft',file=fki)
    if sebesseg>151:
        print(meres[0]+'\t'+str(int(sebesseg))+' km/h\t200000 Ft',file=fki)
    
fki.close()
print(f'\trendszáma: {rendszam}')
print(f'\tátlagsebessége: {int(max_sebesseg)} km/h')

#megszamlalas
db=0
for meres in meresek:
    if meres[0]!=rendszam:
        kezd=valto(meres[1],meres[2],meres[3],meres[4])
        vege=valto(meres[5],meres[6],meres[7],meres[8])
        #ugyanakkor vagy előbb kezdte, de később ért ki
        if kezd<=max_kezd and vege>max_vege:    
            db+=1                               #ezeket lehagyta

print(f'\táltal lehagyott járművek száma: {db}')

#----------------------------------------------------------------------------
# 6. Határozza meg, hogy a járművek hány százalékának az átlagsebessége
#    haladta meg az útszakaszon megengedett legnagyobb sebességet (90 km/h)!
#    Az értéket tizedes tört alakban jelenítse meg a minta szerint!   
#----------------------------------------------------------------------------
print('\n6. feladat')
print(f'A járművek {(gyorshajto/len(meresek))*100:.2f}%-a volt gyorshajtó.')

#----------------------------------------------------------------------------
# 7. Készítsen egy szöveges állományt buntetes.txt néven, amely a gyorshajtók
#    adatait tartalmazza! Ebbe a szöveges állományba azon járművek adatai
#    kerüljenek be, amelyek átlagsebessége 104 km/h-nál nagyobb! A fájlban a
#    jármű rendszáma, az átlagsebesség egész számként megjelenítve és a
#    büntetés összege szerepeljen mértékegységgel, pontosvesszővel vagy
#    tabulátorokkal elválasztottan! A büntetési tételeket a következő
#    táblázat tartalmazza!
#               104 km/h felett 121 km/h-ig 30 000 Ft
#               121 km/h felett 136 km/h-ig 45 000 Ft
#               136 km/h felett 151 km/h-ig 60 000 Ft
#               151 km/h felett 200 000 Ft
#----------------------------------------------------------------------------
#Lásd 5. feladatnál...
print('\nA fájl elkészült.')
