Hogyan írjak olyan algoritmust, mely természetes számokat tartalmazó 10 elemű tömb páros értékű adatát írja ki?
"de nem tudom, hogy mit értünk a páros értékű adat alatt"
Hallottál már olyanról, hogy páros szám?
i := 1
Ciklus amíg i <= 10
Ha T[i] mod 2 = 0 akkor Kiír(T[i])
i := i + 1
kb. ennyi
Azt nem írta a válaszoló, hogy egymást követő természetes számokról lenne szó. Tekintsük tehát véletlenszerű adatnak.
Egy szám párosságának vizsgálatára használhatod a maradékképző operátort 2-es operandussal. Ha x (mod 2) = 0, akkor x páros, feltéve, hogy x e N; Illetve számos programozási nyelv vagy az ahhoz tartozó standard library tartalmaz párosságteszt függvényt vagy operátort, ami esetenként gyorsabban is futhat. Mivel a párosságteszt egy másik megvalósítása az utolsó számjegy vizsgálata. (Általános iskolában is ezt tanították: egy szám páros, ha az utolsó számjegye nem páratlan) Kettes számrendszerben nagyon egyszerű dolgunk van, hiszen egy szám csak akkor lehet páros, ha az utolsó számjegye 0. Mivel erre a fordítóprogramok jó eséllyel kevesebb processzoridejű eljárást is támogatnak, érdemes lehet ezt használni.
Mindössze végig kell iterálni a tömb elemeit, és kiírni azokat az elemeket, amelyek párosak. A párosságteszt egy megvalósítását az előbb leírtam, így nemigen maradhatott nyitott kérdésed, de ha igen, akkor szólj bátran.
A probléma kicsit matekosabb felfogásban: a kérdező által említett halmaz valóban természetes számokat tartalmaz, viszont attól függetlenül még nem rendezett és nem is részbenrendezett. Tehát nem helyes az az észrevétel, amit az első válaszoló tett.
Ha ténylegesen a természetes számok halmazáról lenne szó, a tömbök teljesen haszontalanok lennének: felesleges lenne letárolni bármilyen adatot.
"Ha ténylegesen a természetes számok halmazáról lenne szó, a tömbök teljesen haszontalanok lennének: felesleges lenne letárolni bármilyen adatot."
Ez azért nem feltétlenül igaz :)
Tegyük fel, hogy természetes számok az {1,2,3} de akkor a {3,2,1} is a természetes számok halmazát adná :D
_Jessy_:
Miért tennénk fel, hogy a természetes számok az ez vagy az? A természetes számok definíció szerint a pozitív egész számok rendezett sorozata, vagyis N e Z -edik elem mindig N, és N+1-edik elem mindig N+1. Rendezett a sor. 1-et mindig a 2 követi, 2-t mindig a három, etc.
Szóval másképp így írhatnánk fel:
N = {1, 2, 3, 4, ...}
Ha ebből ki akarom választani a bizonyos feltételnek megfelelő tagokat, ahhoz, nem szükséges eltárolni a halmazt. Mi több! Nem hogy nem szükséges, de még csak nem is lehetséges! Ilyen halmazt a tulajdonságai miatt nem lehetséges a számítógép memóriájában eltárolni.
A természetes számok halmaza egy számtani sorozat. A fenti megállapításom, azaz, hogy a halmaz elemeinek kiválasztáshoz nem szükséges eltárolni az elemeit, valamennyi számtani sorozatra érvényes.
Ezzel a feltétellel megvizsgálod a tömb minden egyes elmét,hogy páros e:
if(array[index] % 2 == 0)
....//Ha igaz a feltétel,akkor kiíratás.
"Miért tennénk fel, hogy a természetes számok az ez vagy az? A természetes számok definíció szerint a pozitív egész számok rendezett sorozata, vagyis N e Z -edik elem mindig N, és N+1-edik elem mindig N+1. Rendezett a sor. 1-et mindig a 2 követi, 2-t mindig a három, etc."
A természetes számokat az egész számokkal definiálod, ráadásul egy halmazt sorozatként adsz meg? Miknek a sorozata? Mi van? Nem ugyanazt a matekot tanultuk, úgy érzem.
"A probléma kicsit matekosabb felfogásban: a kérdező által említett halmaz valóban természetes számokat tartalmaz, viszont attól függetlenül még nem rendezett és nem is részbenrendezett. Tehát nem helyes az az észrevétel, amit az első válaszoló tett."
Ennek meg semmi értelme. Senki nem állította, hogy rendezett lenne bármi, sem az első, sem az előző válaszoló.
"Mivel erre a fordítóprogramok jó eséllyel kevesebb processzoridejű eljárást is támogatnak, érdemes lehet ezt használni."
Ehhez meg csak annyit, hogy igen, ha van külön erre való eljárás, operátor vagy valami, akkor érdemes azt használni, de nem sebesség miatt: a fordító úgyis kioptimalizálja. Annyira nem hülye, hogy egy %2-t ne vegyen észre. Azért kell azt használni, hogy egyértelmű legyen, mi a szándéka a programozónak.
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!