automata.py
1    automata=[]
2    vasarlas=[]
3    ermek=[1,2,5,10,20,50,100]
4    # 1. feladat - adatok beolvasása
5    with open('csoki.txt','r') as fbe:
6        elso_sor=int(fbe.readline().strip())    # ez nekünk nem kell majd semmire
7        for sor in fbe:
8            sor=sor.strip().split()
9            sor=list(map(int,sor))              # minden adat egész szám          
10           automata.append(sor)
11   fbe.close()    
12   with open('vasarlas.txt','r') as fbe:
13       elso_sor=int(fbe.readline().strip())    # ez nekünk nem kell majd semmire 
14       for sor in fbe:
15           sor=sor.strip().split()
16           sor=list(map(int,sor))              # minden adat egész szám
17           vasarlas.append(sor)
18   fbe.close() 
19   # 2. feladat - automata összértéke
20   print('2. feladat')
21   ertek=0
22   for rekesz in automata:
23       ertek+=rekesz[1]*rekesz[2]              # db * ár
24   print(f'Az automatában {ertek} fabatka értékű csokoládé van.')
25   
26   #3. feladat
27   print('3. feladat')
28   rekeszek=set()                          # halmazba gyűjtjük a rekeszszámokat
29   for vetel in vasarlas:
30       rekeszek.add(vetel[0])
31   print('Ezekből a rekeszekből próbáltak vásárolni:')
32   for rekesz in rekeszek:                 # halmaz eleminek kiírása
33       print(rekesz,end=' ')
34   print()
35   
36   # 4. feladat - 7 db egyforma csokoládé vásárlása valamennyi pénzért
37   print('4. feladat')
38   penz=int(input('Mennyi fabatkád van? '))
39   db=7
40   print('Választható rekeszek:',end=' ')
41   for rekesz in automata:                 # ha van elég csoki a rekeszben és
42       if rekesz[1]>=db and penz>=(db*rekesz[2]):  # elég a pénz is...
43           print(rekesz[0],end=' ')
44   print()
45   
46   # 5. feladat -
47   # valamely rekeszből valamennyi csoki vásárlása, optimális címletezéssel
48   print('5.feladat')
49   r=int(input('Kérem a rekesz sorszámát: '))-1        # sorszám, index viszonya
50   db=int(input('Hány darab csokit szeretne: '))
51   print(f'Csoki ára: {automata[r][2]} fabatka')   
52   ertek=automata[r][2]*db                             # ennyi db-ért ennyit fizet
53   print(f'Fizetendő: {ertek} fabatka')
54   
55   # címletezes
56   cimletezes=[]
57   for cimlet in reversed(ermek):  # a legnagyobb címlettől indulunk
58       c_db=ertek//cimlet          # hány egészszer fér bele a címlet
59       ertek=ertek%cimlet          # a többi címlet a maradékkal megy majd tovább
60       print(f'{cimlet} fabatkás: {c_db}')
61   
62   # 6. feladat - 7. rekeszből történő vásárlások elemzése (képernyőre is)
63   print('6. feladat')
64   r=7
65   indulo_db=automata[r-1][1]      # ennyi csoki van kezdetben a rekeszben
66   ar=automata[r-1][2]             # ennyibe kerül egy csoki
67   with open('rekesz7.txt','w') as fki:
68       for ssz,vetel in enumerate(vasarlas,start=1):
69           if vetel[0]==r:                 # 7. rekeszről van szó
70               if vetel[1]<=indulo_db:     # van még benne elég csoki
71                   indulo_db-=vetel[1]     # csökkentjük a darabszámot
72                   fizet=0                 # fizetendő meghatározása
73                   for i in range(2,9):
74                       fizet+=vetel[i]*ermek[i-2]
75                   if fizet>=ar*vetel[1]:  # elég pénzt dobott be
76                       print(f'{ssz}\t{vetel[1]}')
77                       print(f'{ssz}\t{vetel[1]}',file=fki)
78                   else:
79                       print(f'{ssz}\tnem volt elég pénz')
80                       print(f'{ssz}\tnem volt elég pénz',file=fki)
81               else:
82                   print(f'{ssz}\tkevés a csoki')
83                   print(f'{ssz}\tkevés a csoki',file=fki)
84   fki.close()                    
85                   
86       
87       
88             
89