Az I. 573. feladat (2022. október) |
I. 573. (É). Az atomok.txt egyszerű szöveges állomány az egyes atomok izotópjainak táblázatát tartalmazza. A táblázat minden sorában egy atom egy izotópjának adatai szerepelnek az alábbi minta szerint:
...
5 B 10 10,012 936 95(41) 0,199(7)
5 B 11 11,009 305 36(45) 0,801(7)
6 C 12 12,000 000 00(00) 0,9893(8)
6 C 13 13,003 354 835 07(23) 0,0107(8)
6 C 14 14,003 241 9884(40)
7 N 14 14,003 074 004 43(20) 0,996 36(20)
7 N 15 15,000 108 898 88(64) 0,003 64(20)
...
Az első szám az elem rendszáma (Z), a második a vegyjele (jelöljük V-vel), a harmadik az elem izotópjának tömegszáma (A), a negyedik szám az izotóp relatív atomtömege (m), az ötödik szám – amennyiben van – az izotóp előfordulásának aránya (jelöljük ea-val) egy adott elem esetén. A zárójelben lévő mennyiségek az értékek utolsó egy-két számjegyének hibáját jelentik, de a feladatban ezekkel nem kell számolni.
Készítsünk számítógépes programot, amely beolvassa a táblázatot tartalmazó szöveges állományt, majd megoldja az alábbi feladatokat. A képernyőre írást igénylő részfeladatok esetén – a mintához tartalmában hasonlóan – írjuk ki a képernyőre a feladat sorszámát (például: 2. feladat:), és utaljunk a kiírt tartalomra is. Ha a felhasználótól kérünk be adatot, akkor jelenítsük meg a képernyőn, hogy milyen értéket várunk. Mindkét esetben az ékezetmentes kiírás is elfogadott.
1. Olvassuk be az atomok.txt szöveges állományból az izotópok adatait. A zárójelben lévő mennyiségeket a számítás során nem fogjuk használni, így azokat nem kell eltárolni. Az egy sorban lévő értékek között szóköz az elválasztójel. Ügyeljünk arra, hogy a számok egész- és törtrésze között tizedesvessző szerepel, illetve a legtöbb esetben ezres tagolással vannak megadva az értékek, tehát itt is szóköz található. Amennyiben egy izotópnál az előfordulás aránya nincs megadva, úgy ott az ea értéket tekintsük nullának.
Helyes beolvasás esetén a fenti mintában szereplő izotópok számadatai feldolgozás után így néznek ki:
...
5 B 10 10.01293695 0.199
5 B 11 11.00930536 0.801
6 C 12 12.0 0.9893
6 C 13 13.003354835069999 0.0107
6 C 14 14.0032419884 0.0
7 N 14 14.00307400443 0.99636
7 N 15 15.00010889888 0.00364
...
(Az alkalmazott programozási nyelv számábrázolási pontosságától függően részben eltérő megoldások is születhetnek, például 6 C 14 14.003241988400001 0.0, ami szintén helyes.)
2. Kérjük be a felhasználótól egy elem vegyjelét, és írjuk ki az elem összes izotópjának adatait a következő formában:
2. feladat:
Kérem egy elem vegyjelét: C
Z=6 A=12 m=12.0 ea=0.9893
Z=6 A=13 m=13.003354835069999 ea=0.0107
Z=6 A=14 m=14.003241988400001 ea=0.0
3. Adjuk meg, hogy melyik elemeknek szerepel a táblázatban a legtöbb izotópjuk, és mennyi ez az érték.
3. feladat:
A legnagyobb izotópszám: 10
Az elemek: Sn
4. Készítsünk függvényt tomeg néven, amely megadja egy elem relatív atomtömegét figyelembe véve az izotópjainak relatív atomtömegét és előfordulások arányát.
A függvény bemenete az elem vegyjele, visszaadott értéke egy valós szám legyen. Például a szén (C) esetén az elem relatív atomtömege a három izotóp adatai alapján (lásd a mintát):
$$\begin{gather*} 12{,}0 \cdot 0{,}9893 + 13{,}003\,354\,835\,069\,999 \cdot 0{,}0107 + 14{,}003\,241\,988\,400\,001 \cdot 0{,}0 =\\ = 12{,}010\,735\,896\,735\,248. \end{gather*}$$5. Készítsünk tomegek.txt néven egyszerű szöveges állományt, amely azon elemek relatív atomtömegét tartalmazza, amelyeknél legalább egy izotóp aránya 0-tól különböző érték. Egy sorban egy elem vegyjele és relatív atomtömege szerepeljen. Az állományban minden megfelelő elem csak egyszer forduljon elő.
Minta a tomegek.txt állományról:
H 1.0077091323512934
He 4.002601932120928
Li 6.94003660291572
Be 9.012183065
B 10.811028046410001
C 12.010735896735248
N 14.006703211445798
Beküldendő egy tömörített i573.zip állományban a program forráskódja, valamint a program rövid dokumentációja, amely tartalmazza a megoldás rövid leírását, és megadja, hogy a forrásállomány melyik fejlesztői környezetben fordítható.
Letölthető állomány: atomok.txt
(10 pont)
A beküldési határidő 2022. november 15-én LEJÁRT.
Mintamegoldásként Köves Alíz tatai, 10. évfolyamos tanuló Python nyelvű megoldását (atomok.py) és Gyönki Dominik 10. évfolyamos, egri versenyző C# nyelvű megoldását (i573.cs) adjuk közre.
Statisztika:
12 dolgozat érkezett. 10 pontot kapott: Fényes Ádám, Gyönki Dominik, Hinek Milán, Horváth Milán, Kövesi Alíz, Vadász Levente Márton, Zádor-Nagy Zsombor. 9 pontot kapott: Nagy 292 Korina, Szabó Imre Bence. 2 pontot kapott: 3 versenyző.
A KöMaL 2022. októberi informatika feladatai