|
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