Hol a hiba a programomban?
Heló! Hol a hiba, pls segítsetek:
Ez egy egyszerű algoritmus (turbo) pascal-ban, ami teszteli, hogy prím-szám-e, de nem futtatja le. Azt írja az "else oszto:=oszto+1" sornál, hogy error 113: error in statement, de akárhova teszem a bekezdést, akkor is. Meg még sztem lehet vmi hiba az "if"-eknél is, meg más bekezdéseknél is.
Érdekes egy primkeresés :) de végül is igazad van ha csak két osztója van akkor prim.
var a, oszto, db : longint;
begin
Write('Kerem a szamot: ');
ReadLn(a);
oszto := 1;
db := 0;
while oszto <= a do
begin
if a mod oszto = 0 then db := db + 1;
Inc(oszto);
end;
if db = 2 then WriteLn('Prim szam') else WriteLn('Nem prim szam');
end.
Hasonlítsd össze a tieddel !
Köszi! Átírtam a kettőt ezzé:
var a, oszto, db : longint;
begin
Writeln('Kerem a szamot: ');
ReadLn(a);
oszto := 1;
db := 0;
while oszto <= a do begin
if a mod oszto = 0 then
db := db + 1;
oszto := oszto + 1;
end;
if db = 2 then WriteLn('Prim szam')
else WriteLn('Nem prim szam');
readln;
end.
A program működik, bár arra még mindig nem jöttem rá, mi lehetett a hiba. De köszi!
Na, most tovább írtam egy kicsit(az első hibájának az okát még mindig nem tudom :D) úgy, hogy 2 szám közötti prímeket írja ki:
var a, x, y, oszto, db : longint;
begin
writeln('Kerem az elso szamot: ');
readln(x);
writeln('Kerem a masodik szamot: ');
readln(y);
a := x+1;
oszto := 1;
db := 0;
while a <= y do begin
while oszto <= a do begin
if a mod oszto = 0 then db := db + 1;
oszto := oszto + 1;
end;
if db = 2 then WriteLn(a);
a := a + 1;
end;
readln;
end.
Elindítja, meg minden, de azt csinálja, hogy pl. beírom, hogy első szám 2, második 100(de az tökmindegy neki) és kiírja végeredménynek, hogy 3. Viszont, ha 3-at írok be, nem ír ki végeredményt. Szóval, kiírja, a-t hogyha (x+1) prím, ha nem akkor semmit. Tehát nem ismétli a while-t.(?)(?-De miért?)
Nem értem mi nem jó.
Játszd végig fejben, mi történik a programban, az egyes iterációkban mik a változók értékei. :) Ha ez nehéz, akkor csinálj kiíratásokat minden iterációban, külső és belső ciklusban is. Pl.:
"kulso ciklus: db=? oszto=? a=? y=? ..."
"belso ciklus: db=? oszto=? a=? y=? ..."
Meg fogod látni mi a hiba. :)
Értem és köszönöm szépen! :)
Köszi, hogy nem csak abban segítettél, hogy működjön, hanem meg is értettem mi a baj, és szebb is lett a program.
És köszi neked is, #8 !
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!