Érettségi feladat megoldás közben akadt az értelmezése egy kis problémám, hogy is van?
A kiserlet.txt állományban egy pénzfeldobás-sorozat eredményét találja. Mivel
a sorozat hossza tetszőleges lehet, ezért az összes adat memóriában történő egyidejű
eltárolása nélkül oldja meg a következő feladatokat! Feltételezheti, hogy egymilliónál több
adata nem lesz.
"összes adat memóriában történő egyidejű
eltárolása nélkül"
Most ez azt jelentené, hogy ne olvassam be egy pl: tömbbe az adatokat? de akkor nem tudok vele dolgozni, akkor ez mi ??
Illetve egy másik: Állítson elő és tároljon a memóriában 1000 db négy dobásból álló sorozatot!
nyilván az adatokat le kell tárolni ha dolgozni akarok vele nem ?
"nyilván az adatokat le kell tárolni ha dolgozni akarok vele nem ?"
Le van az már tárolva.
Megtalálod a "kiserlet.txt" nevű állományban.
Minden normális programnyelv lehetővé teszi hogy ne az egész fájlt olvasd be, hanem csak egy részét. Pl. Java-ban be tudsz olvasni FileInputStream.read-el tetszőleges mennyiségű bájtot, vagy BufferedReader-rel soronként is olvashatsz be szöveget.
Tehát olvasod az adatokat, és közben változókba gyűjtöd a pénzfeldobásokról a statisztikákat.
Ehelyett (pszeudokód):
adatok = egész_file_beolvas_tömbbe
ciklus {
adat = [adat kiszedése tömbből]
tömbből szerzett adat feldolgozása
}
Ilyesmi:
bemenet_fájl = fájl_megnyit
ciklus {
adat = [bemenet_fájl-ból 1 feldobást beolvas]
beolvasott adat feldolgozása
}
"Most ez azt jelentené, hogy ne olvassam be egy pl: tömbbe az adatokat? de akkor nem tudok vele dolgozni, akkor ez mi ??"
Mi az, hogy nem tudsz vele dolgozni? Ez nyilván a művelettől függ -- ha mondjuk átlagot számolsz, nyilván semmi szükség a teljes tömb eltárolására, elegendő mindig csak egy adatot beolvasni az állományból.
"lletve egy másik: Állítson elő és tároljon a memóriában 1000 db négy dobásból álló sorozatot! Nyilván az adatokat le kell tárolni ha dolgozni akarok vele nem ?"
Nyilván vagy nem nyilván, de ez miért is jelentené azt, hogy az ÖSSZES ADATOT a memóriában kell tárolnod? 1000*4 az csak 4000, töredéke a betervezett millió adatnak.
Dim FlipCount As Integer = 0
Dim FileReader = New StreamReader("kiserlet.txt")
Dim Counter3 As Integer = 0
While FileReader.Peek > -1
FileReader.ReadLine()
Counter3 += 1
End While
Console.WriteLine("A kísérlet " & Counter3 & " dobásból állt.")
@#8:
Én pedig, másik laikusként, bizonyos vagyok benne, hogy nem stimmelne. Éppen a tömbbe olvasás (vagyis „az összes adat memóriában történő egyidejű eltárolása”) az, amit a feladat értelmében el kell kerülnöd. Kérdező ugyan nem közölte magukat a feladatokat, de sejthető, hogy azok egy-két alkalmasan választott méretű (egymilliós határ) változó célszerű használatával megoldhatók. Mellesleg szerintem sem benne, sem másban nem merült fel az az agyament ötlet, hogy egymillió külön változót definiáljon a programban, holott a tömbös javaslatod láthatólag ennek venné elejét. Egy ilyen kivihetetlen megoldással a legtapasztalatlanabb és legmegfontolatlanabb kezdő sem kísérletezne; A tömbben tárolás viszont -- esetleg más gyakorlatok párhuzama alapján -- már eszébe juthat. A hasonló feladatok éppen arra szolgálnak, hogy ráébresszék: A teendők átgondolásával elkerülhető a hebehurgyaságból elkövetett memóriapocsékolás.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!