Kezdőoldal » Számítástechnika » Programozás » Ezt hogyan lehet megcsinálni...

Ezt hogyan lehet megcsinálni FreePascalban halmazok segítségével, mert ötletem sincs rá?

Figyelt kérdés
Az Eratosztenész szitája módszer segítségével keressük meg a prímszámokat 1 és 255 között!
2016. okt. 9. 00:33
 1/9 CspCsj ***** válasza:

Gondolom a talált prímszámok tárolására halmaz adatszerkezetet használsz:

- Pascal algoritmus a problémára tömbökkel - [link]

- FreePascal leírás: halmaz deklaráció és műveletek - [link]


Kombináld össze a kettőt...

2016. okt. 9. 07:32
Hasznos számodra ez a válasz?
 2/9 SimkoL ***** válasza:

Az én művem a a Pascal-os szita a Wiki-n, ez lényegesen rövidebb amit te akarsz:


program eraszt_halmaz;


var j, p : Integer;

halmaz : set of Byte;


begin

halmaz := [];

for j := 2 to 255 do Include(halmaz, j);

p := 2;

while p * p <= 255 do

begin

j := p * p;

while j <= 255 do

begin

Exclude(halmaz, j);

Inc(j, p);

end;

Inc(p);

end;

for j := 1 to 255 do if j in halmaz then Write(j:4);

ReadLn;

end.


Feles-sör játszik ?

2016. okt. 9. 09:57
Hasznos számodra ez a válasz?
 3/9 tabaki ***** válasza:
Egyébként a 255-ös határ nem egészen véletlen. Pont ezen a tartományon belül nagyon egyszerűen ellenőrizni, hogy egy szám benne van-e a halmazban.
2016. okt. 9. 10:01
Hasznos számodra ez a válasz?
 4/9 tabaki ***** válasza:
Ejnye, SimkoL, adhattál volna még esélyt Kérdezőnek... Bár nem rossz feladat az se, hogy most magyarázza el a programod működését. Jól jöhet még, ha a tanárja rákérdez, mert tetszik neki a megoldás -- vagy csak nem érti :)
2016. okt. 9. 10:11
Hasznos számodra ez a válasz?
 5/9 SimkoL ***** válasza:
:) Az a tapasztalatom, hogy a Pascal halmazok témakör mindenkinek ellenség. Ha megkér elmagyarázom, igaz nincs sok minden - Include, Exclude, in - amiről beszélni lehetne. A szita egyszerű ciklusok.
2016. okt. 9. 10:18
Hasznos számodra ez a válasz?
 6/9 SimkoL ***** válasza:
'Jól jöhet még, ha a tanárja rákérdez, mert tetszik neki a megoldás -- vagy csak nem érti :)' Mármint a tanár ? Mert sajna tapasztaltam ilyet is a gyerekeim tanulása során.
2016. okt. 9. 10:49
Hasznos számodra ez a válasz?
 7/9 A kérdező kommentje:
Köszönöm SimkoL-nak a progit, rövid, tömör és még értem is!!! :D
2016. okt. 9. 11:13
 8/9 SimkoL ***** válasza:

Kicsit optimálisabban:


program eraszt_halmaz;


var j : Integer;

p : Integer = 2;

halmaz : set of Byte = [2..255];


begin

while p * p <= 255 do

begin

if p in halmaz then

begin

j := p * p;

while j <= 255 do

begin

Exclude(halmaz, j);

Inc(j, p);

end;

end;

Inc(p);

end;

for j := 2 to 255 do if j in halmaz then Write(j:4);

ReadLn;

end.

2016. okt. 9. 11:20
Hasznos számodra ez a válasz?
 9/9 tabaki ***** válasza:

@#6:

No igen, arra céloztam... Történetesen erre a minapi bonyodalomra gondolok:

http://www.gyakorikerdesek.hu/szamitastechnika__programozas_..

http://www.gyakorikerdesek.hu/szamitastechnika__programozas_..

Szvsz itt elég nehéz lenne végül nem a tanár nyakába varrni a balhét. Igaz, hogy elemista szinten kezeli az egyetemistákat, de legalább maga sem érti, amit tanít nekik.

2016. okt. 9. 11:35
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!