Kezdőoldal » Számítástechnika » Programozás » Egyszerű Pascal program;...

Egyszerű Pascal program; valaki meg tudná nézni, hol hibáztam?

Figyelt kérdés

A prímszámokat kell kiíratnom n-ig egy régi könyv folyamatábrája alapján. Jelenleg a prímszámok közé ír pár nem prímet is. Így néz ki most:

begin

write('Melyik termeszetes szamig irjuk ki a primeket? ');

readln(n);

write('2 3 ');

p:=5;

q:=3;

for k:=3 to n do begin

repeat p:=p+2;

until(p/q<>int(p/q)) and (p<=n);

repeat q:=q+2;

until sqr(q)>p;

write(p, ' ');

end;

readln;

end.


Az alapjának ennek kéne maradni, hogy az ábrára hasonlítson. Minden segítséget nagyon köszönök!:)



2018. nov. 20. 18:31
1 2 3 4
 1/36 tabaki ***** válasza:
Mindenesetre nem ártana létező változókat használni. Egyelőre igyekszem átszerkeszteni, hátha megértem, miről van szó.
2018. nov. 20. 21:43
Hasznos számodra ez a válasz?
 2/36 tabaki ***** válasza:
Nekem a néhány nem prímen túl egyéb problémáim is akadtak: Kötelezően átlépi az 5-öt, jókora mínusz számok jelennek meg, ráadásul nem n-ig vizsgál, hanem n számot akar kiírni. Nem ártana látni azt a folyamatábrát.
2018. nov. 20. 22:01
Hasznos számodra ez a válasz?
 3/36 anonim ***** válasza:

Egyetértve tabaki #2-es hozzászólásával: jó lenne látni a könyvben (melyikről lenne szó?) szereplő folyamatábrát.


Itt egy nem épp optimális - de működő - megoldás:

[link]


De egyébként nézz utána az Eratoszthenész szitájának:

[link]

2018. nov. 21. 01:59
Hasznos számodra ez a válasz?
 4/36 SimkoL ***** válasza:
Az a 'break;' de bántja a szemem :)
2018. nov. 21. 11:53
Hasznos számodra ez a válasz?
 5/36 SimkoL ***** válasza:

A saját verzióm:



function prim_e(n: QWord): Boolean;

var v, j: QWord;

prime: Boolean;

begin

Result := False;

if not Odd(n) then Exit;

prime := True;

v := Round(Sqrt(n));

j := 3;

while (prime) and (j <= v) do

begin

prime := (n mod j) <> 0;

Inc(j, 2);

end;

Result := prime;

end;

2018. nov. 21. 11:55
Hasznos számodra ez a válasz?
 6/36 anonim ***** válasza:

"Az a 'break;' de bántja a szemem :)"

Akkor használj szemüveget. ;)

Ha megtaláljuk a szám osztóját az azt megelőző számok között, akkor felesleges továbbmenni, így a belső ciklusból kiléphetünk.

2018. nov. 21. 13:24
Hasznos számodra ez a válasz?
 7/36 SimkoL ***** válasza:
Eleve úgy írunk feltételt, hogy ne kellessen.
2018. nov. 21. 13:39
Hasznos számodra ez a válasz?
 8/36 anonim ***** válasza:
0%

"Eleve úgy írunk feltételt, hogy ne kellessen."


* Sóhajt *

2018. nov. 21. 13:41
Hasznos számodra ez a válasz?
 9/36 tabaki ***** válasza:

Kérdező meg közben köddé vált? Vagy még mindig a folyamatábrát másolgatja?

Régi könyvekről szólván: Egy szúette, megfakult weboldalon találtam egy vénséges ó-cé nyelvű varázsigét, amelyet itt most megpróbálok a dallamosabb pascal nyelven, Kérdező változóneveivel interpretálni:


var

n, p, q : qword;

k : byte;

begin

      write('Melyik termeszetes szamig irjuk ki a primeket? ');

      readln(n);

      for p := 1 to n do

            begin

                  k := 0;

                  for q := 1 to n do

                        if p mod q = 0 then Inc(k);

                  if k = 2 then Write(p, ' ');

            end;

      readln;

end.


Lehet, hogy nem egészen korrekt a fordítás, de néhány próba alapján, mintha működne. Azért találtam érdekesnek, mert első benyomásra a kérdés programja is valami trükkös megoldás nem egészen sikerült kódba öntésének tűnik.

2018. nov. 21. 19:39
Hasznos számodra ez a válasz?
 10/36 tabaki ***** válasza:
Lajos, mea maxima culpa! Pedig hogy igyekeztem a csinosítással, aztán mégis benne felejtődött az eredeti kisbetűs write és readln...
2018. nov. 21. 19:43
Hasznos számodra ez a válasz?
1 2 3 4

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!