banyato202105idny.py
1    to=[]
2    
3    #---------------------------------------------------------------------------------------
4    # 1. Olvassa be és tárolja el a melyseg.txt állomány adatait, és annak felhasználásával
5    #    oldja meg a következő feladatokat! 
6    #---------------------------------------------------------------------------------------
7    def F1():
8        
9        fbe=open('melyseg.txt','r')
10       global tsor,toszlop
11       tsor=int(fbe.readline().rstrip())
12       toszlop=int(fbe.readline().rstrip())
13   
14       for fsor in fbe:
15           fsor=list(map(int,fsor.strip().split()))    
16           to.append(fsor)
17   
18       fbe.close()
19       #print(to)
20   
21   #---------------------------------------------------------------------------------------
22   # 2. Kérje be egy mérési eredmény sor- és oszlopazonosítóját, majd írassa ki az adott
23   #    helyen mért adatot a képernyőre! (A sorok és oszlopok számozása kezdődjön 1-gyel!)
24   #---------------------------------------------------------------------------------------
25   def F2():
26       print('2. feladat ')
27       sor=int(input('A mérés sorának azonosítója='))-1
28       oszlop=int(input('A mérés oszlopának azonosítója='))-1
29       print('A mért mélység az adott helyen %d dm' %to[sor][oszlop])
30   
31   #---------------------------------------------------------------------------------------
32   # 3. Határozza meg a tó (vagyis az ábrán szürkével jelölt rész) felszínének területét,
33   #    valamint a tó átlagos mélységét! Írassa ki a két eredményt a mintának megfelelően
34   #    a képernyőre! A tó átlagos mélysége méterben kifejezve, két tizedesjegy pontossággal
35   #    jelenjen meg!
36   #---------------------------------------------------------------------------------------
37   def F3():
38       print('3. feladat')
39   
40       db_0=0
41       melysegek=0
42       for sor in to:
43           db_0+=sor.count(0)
44           melysegek+=sum(sor)
45   
46       felszin=tsor*toszlop-db_0
47       atlag=(melysegek/10)/felszin
48       
49       print('A tó felszíne: %d m2, átlagos mélysége: %.2f m' %(felszin,atlag))
50   
51   #---------------------------------------------------------------------------------------
52   # 4. Mekkora a tó legnagyobb mélysége, és hol a legmélyebb a tó? Jelenítse meg a választ 
53   #    a képernyőn! A legmélyebb pont koordinátáit a mintának megfelelően (sor; oszlop) 
54   #    formában írassa ki! Ha több ilyen mérési eredmény is van, mindegyik koordinátapárja 
55   #    jelenjen meg! 
56   #---------------------------------------------------------------------------------------
57   def F4():
58       print('4. feladat')
59       
60       maxm=0
61       for sor in to:
62           if max(sor)>maxm:
63               maxm=max(sor)
64       print('A tó legnagyobb mélysége: %d dm' %maxm)
65   
66       print('A legmélyebb helyek sor-oszlop koordinátái:')
67       for i,sor in enumerate(to,1):
68           try:
69               if sor.index(maxm)>-1:
70                   print('('+str(i)+'; '+str(sor.index(maxm)+1)+')',end=' ')
71           except:
72               pass
73               
74       print()
75       #(14; 20) (26; 11) (32; 16)
76   
77   #---------------------------------------------------------------------------------------
78   # 5. Milyen hosszú a tó partvonala, vagyis az ábrán a szürkével jelölt részt határoló
79   #    vastag fekete vonal hossza? A partvonalhoz vegye hozzá a tóban lévő szigetek
80   #    kerületét is! Írassa ki az eredményt a mintának megfelelően a képernyőre!
81   #    (A megoldás során felhasználhatja, hogy a táblázat első és utolsó sorában és
82   #    oszlopában minden adat 0.) 
83   #---------------------------------------------------------------------------------------
84   def F5():
85       print('5. feladat')
86   
87       partvonal=0
88       for i in range(1,tsor-1):
89           for j in range(1,toszlop-1):
90               if to[i][j]>0:
91                   if to[i-1][j]==0:       #felette
92                       partvonal+=1
93                   if to[i+1][j]==0:       #alatta
94                       partvonal+=1
95                   if to[i][j-1]==0:       #balra
96                       partvonal+=1
97                   if to[i][j+1]==0:       #jobbra
98                       partvonal+=1               
99       print('A tó partvonala %d m hosszú' %partvonal)
100  
101  #---------------------------------------------------------------------------------------
102  # 6. Kérje be a felhasználótól egy oszlop azonosítóját, és szemléltesse a diagram.txt
103  #    szöveges állományban „sávdiagramon” a tó mélységét az adott oszlopban a következő 
104  #    módon! A sor elején jelenjen meg a mérési adat sorának azonosítója pontosan két 
105  #    számjeggyel, majd tegyen egymás mellé annyi csillagot (*), ahány méter az adott
106  #    helyen a tó mélysége! A mérési adatokat a matematika szabályainak megfelelően
107  #    kerekítse!
108  #---------------------------------------------------------------------------------------
109  def F6():
110      print('6. feladat')
111  
112      fki=open('diagram.txt','w')
113  
114      oszlop=int(input('A vizsgált szelvény oszlopának azonosítója='))-1
115  
116      for i,sor in enumerate(to,1):
117          print(str(i).zfill(2).rjust(2)+'*'*round(sor[oszlop]/10))
118          print(str(i).zfill(2).rjust(2)+'*'*round(sor[oszlop]/10),file=fki)
119  
120      fki.close()
121          
122  #---------------------------------F Ő M O D U L-----------------------------------------
123  F1()
124  F2()
125  F3()
126  F4()
127  F5()
128  F6()
129