chatgpt_megoldás_javított.py
1    import math
2    
3    # Adatok beolvasása
4    def beolvasas(fajlnev):
5        kraterek = []
6        with open(fajlnev, 'r') as file:
7            for line in file:
8                adatok = line.strip().split('\t')
9                x = float(adatok[0])
10               y = float(adatok[1])
11               r = float(adatok[2])
12               nev = adatok[3]
13               kraterek.append((x, y, r, nev))
14       return kraterek
15   
16   # Kráterek száma
17   def krater_szam(kraterek):
18       return len(kraterek)
19   
20   # Kráter adatok lekérdezése
21   def krater_kereses(kraterek, nev):
22       for krater in kraterek:
23           if krater[3] == nev:
24               return f"A(z) {nev} középpontja X={krater[0]} Y={krater[1]} sugara R={krater[2]}."
25       return "Nincs ilyen nevű kráter."
26   
27   # Legnagyobb kráter
28   def legnagyobb_krater(kraterek):
29       max_krater = max(kraterek, key=lambda k: k[2])
30       return max_krater[2], max_krater[3]
31   
32   # Két pont távolsága
33   def tavolsag(x1, y1, x2, y2):
34       return math.sqrt((x2 - x1)**2 + (y2 - y1)**2)
35   
36   # Nem átfedő kráterek
37   def nem_atfed_kraterek(kraterek, keresett_nev):
38       keresett_krater = next((krater for krater in kraterek if krater[3] == keresett_nev), None)
39       if not keresett_krater:
40           return "Nincs ilyen nevű kráter."
41       x1, y1, r1, _ = keresett_krater
42       nem_atfedok = []
43       for krater in kraterek:
44           x2, y2, r2, nev = krater
45           if tavolsag(x1, y1, x2, y2) > (r1 + r2):
46               nem_atfedok.append(nev)
47       return ", ".join(nem_atfedok)
48   
49   # Kráterek tartalmazása
50   def krater_tartalmazas(kraterek):
51       tartalmazasok = []
52       for i in range(len(kraterek)):
53           for j in range(len(kraterek)):
54               if i != j:
55                   x1, y1, r1, nev1 = kraterek[i]
56                   x2, y2, r2, nev2 = kraterek[j]
57                   if tavolsag(x1, y1, x2, y2) + r2 < r1:
58                       tartalmazasok.append((nev1, nev2))
59       return tartalmazasok
60   
61   # Kráterek területe
62   def krater_terulet(kraterek):
63       teruletek = []
64       for krater in kraterek:
65           _, _, r, nev = krater
66           terulet = 3.14 * r * r
67           teruletek.append((terulet, nev))
68       return teruletek
69   
70   # Fő program
71   def main():
72       fajlnev = "felszin_tpont.txt"  # vagy "felszin_tvesszo.txt"
73       kraterek = beolvasas(fajlnev)
74       
75       # 2. feladat
76       print("2. feladat")
77       print(f"A kráterek száma: {krater_szam(kraterek)}")
78       
79       # 3. feladat
80       print("3. feladat")
81       keresett_nev = input("Kérem egy kráter nevét: ")
82       print(krater_kereses(kraterek, keresett_nev))
83       
84       # 4. feladat
85       print("4. feladat")
86       max_r, max_nev = legnagyobb_krater(kraterek)
87       print(f"A legnagyobb kráter neve és sugara: {max_nev} {max_r}")
88       
89       # 6. feladat
90       print("6. feladat")
91       keresett_nev = input("Kérem egy kráter nevét: ")
92       nem_atfedok = nem_atfed_kraterek(kraterek, keresett_nev)
93       if nem_atfedok:
94           print(f"Nincs közös része: {nem_atfedok}")
95       
96       # 7. feladat
97       print("7. feladat")
98       tartalmazasok = krater_tartalmazas(kraterek)
99       for nev1, nev2 in tartalmazasok:
100          print(f"A(z) {nev1} kráter tartalmazza a(z) {nev2} krátert.")
101      
102      # 8. feladat
103      print("8. feladat")
104      teruletek = krater_terulet(kraterek)
105      with open("terulet.txt", 'w') as file:
106          for terulet, nev in teruletek:
107              file.write(f"{terulet:.2f}\t{nev}\n")
108      print("A terület adatok a terulet.txt fájlba kerültek.")
109  
110  if __name__ == "__main__":
111      main()
112