Középiskolai Matematikai és Fizikai Lapok
Informatika rovattal
Kiadja a MATFUND Alapítvány
Már regisztráltál?
Új vendég vagy?

Az I. 319. feladat (2013. április)

I. 319. Néhány évtizeddel ezelőtt több, különböző alapon működő hálózat létezett. Ma már a TCP/IP alapú hálózatok az egyeduralkodók. A hatékonyabb menedzselés érdekében az eszközöket alhálózatokba szervezik. Ez történhet pusztán logikai alapon is, de az alhálózatok általában fizikai szinten is elkülönülnek. Az eszközök a saját hálózatukba tartozó eszközökkel közvetlenül kommunikálnak, a többi eszközt az alapértelmezett átjárón keresztül érik el.

Ha egy eszközt TCP/IP alapú hálózatban szeretnénk használni, akkor feltétlen meg kell adnunk IP-címét (az eszköz azonosítóját), netmaskját, az alapértelmezett hálózati átjáró IP-címét (utóbbi kettő az adott alhálózatra jellemző) és a domainnevekkel történő eléréséhez a DNS szerver címét is. Ezek a címek négy 1 bájtnyi, általában decimálisan leírt, egymástól ponttal elválasztott számból állnak.

Egy alhálózat méretét (a hozzá tartozó IP-címek számát) a netmask segítségével lehet meghatározni. (A netmask bináris alakja első néhány jegyének helyén 1 áll, az azt követő jegyek mindegyike 0.) A netmask kettes számrendszerbeli alakjában meghatározzuk a 0 értékű bitek számát (k). Az ennek megfelelő méretű bináris számok száma (2k) adja meg az oda tartozó címek számát. Mivel a legelső cím a hálózat címe, a legutolsó pedig egy úgynevezett szórási cím, az alhálózatban összesen 2k-2 eszköz látható el IP-címmel.

Az alhálózat címe és a szórási cím egy eszköz IP-címe és a hozzá tartozó netmask ismeretében meghatározható. Ha képezzük a címek kettes számrendszerbeli alakját, a logikai és műveletet számjegyenként alkalmazva rájuk megkapjuk a hálózat címét. A szórási cím megadásához az IP-cím kettes számrendszerbeli alakjához a netmask egyes komplemensét kell hozzávennünk a logikai vagy művelettel.

Az ipadat.txt állományban egy nagyobb cég belső hálózatán található eszközei közül tüntettük fel néhánynak az adatait. Minden egyes sorban két adat van, egymástól pontosan egy szóközzel elválasztva, az IP-cím és a netmask.

Az ipadat.txt állomány első néhány sora:

Írjunk programot, amely megoldja az alábbi feladatokat. Az egyes feladatok megoldása előtt jelenítsünk meg a képernyőn a feladat sorszámát tartalmazó szöveget (például: 6. feladat), a beolvasás előtt pedig a beolvasás tartalmára vonatkozó üzenetet (például: Add meg a dolgozók számát!) Az ékezet nélküli kiírás is megengedett.

1. Olvassuk be és tároljuk el a honlapunkról letölthető ipadat.txt állomány adatait a későbbi feladatok megoldásához szükséges formában.

2. Jelenítsük meg a képernyőn, hogy hány IP-címet tartalmaz az állomány.

3. Készítsünk függvényt binbe néven, amely egy IP-címhez annak bináris alakját rendeli az azt alkotó számok 8 bites kettes számrendszerbeli alakjának egymás után írásával szövegként. Például: 10.32.0.17-hez a 00001010 00100000 00000000 00010001 értéket rendeli. (A szóközök csak a jobb olvashatóság miatt szerepelnek a nyomtatásban.)

4. Készítsünk függvényt binbol néven, amely egy szövegként tárolt 32 jegyű kettes számrendszerbeli számhoz a neki megfelelő IP-cím decimális alakját rendeli.

A további feladatok megoldásához használjuk az itt elkészített függvényeket közvetlenül vagy más függvényeken, eljárásokon keresztül.

5. Olvassuk be egy netmask értékét decimális formában, majd jelenítsük meg a képernyőn, hogy hány eszközt láthatunk el egy ilyen hálózatban IP-címmel. (Például a 255.255.240.0 netmaskhoz 4094 tartozik.)

6. Egy intézményben az alhálózatokat úgy alakították ki, hogy méretük a lehető legkisebb, de az IP-címmel ellátható eszközök száma az ott dolgozók számának legalább háromszorosa legyen. Olvassuk be egy osztály dolgozóinak számát, majd határozzuk meg a hálózatban használt netmask decimális alakját.

7. A bevezetőben szereplő cégnél az egyes alhálózatok utolsó felhasználható IP-címét az átjáróhoz rendelik. Jelenítsük meg a képernyőn azon sorok sorszámát egymástól szóközzel elválasztva, amelyek ilyen átjárók alhálózat oldali IP-címét tartalmazzák.

8. Készítsük el a csoport.txt állományt, amelyben az ipadat.txt fájlban található IP-címek alhálózatonkénti csoportosításban szerepeljenek. Egy-egy csoport első sora az alhálózat címe legyen. Alatta a hozzá tartozó címek soronként jelenjenek meg. Minden IP-cím sora tabulátorjellel kezdődjön.

A fenti példabemenethez tartozó kimenet:

Beküldendő a program forráskódja (i319.pas, i319.cpp, ...), valamint a program rövid dokumentációja (i319.txt, i319.pdf, ...), amely megadja, hogy a forrásállomány melyik fejlesztői környezetben fordítható.

Letölthető fájl: ipadat.txt

(10 pont)

A beküldési határidő 2013. május 10-én LEJÁRT.


A feladat megoldásai - még érettségi pontszámban kifejezve is - csak elenyésző mértékben tartalmaztak hibát. A beküldők sokféle megoldást adtak: volt, aki csak a kívánt függvényeket használta, míg mások kibővítették a függvények körét. A bővítés jó hatással volt az áttekinthetőségre és a kód hosszára.

Az értékelést az alábbi fájl alapján végeztük: i319ertekeles.pdf

A beküldött megoldások közül Tegzes Tamás gazdagon kommentezett munkáját választottuk. i319.pas


Statisztika:

7 dolgozat érkezett.
10 pontot kapott:Csernák Tamás, Gema Barnabás, Qian Lívia, Tegzes Tamás, Varga 256 Erik.
9 pontot kapott:Fényes Balázs, Németh 017 András.

A KöMaL 2013. áprilisi informatika feladatai