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