Mi a hiba az alábbi algoritmusban?
program buborekos;
uses crt;
var n,i,j,be:integer;
a: array [1..100] of integer;
begin
writeln('Hány számot akarok beolvasni?');
readln(n);
for i:=1 to n do
begin
writeln('Következö szám');
readln(a[i]);
end;
for i:=2 to n do begin
be:=a[i];
j:=i-1;
while (j>0) and a[j]>be) do begin
a[j+1]:=j-1;
end;
a[j+1]:=be;
end;
writeln(a[i],' ');
end.
A pascal nem talál hibát benne, engedi lefuttatni,de amikor le akarom futtatni, beolvassa az értékeket,utánna lefagy, semmilyen billentyüre nem reagál, viszont az X-nél egyszerüen le lehet zárni,tehát nem maga a Pascal fagy le,csak a benne futó program.
Annyit tennék hozzá, hogy ha valamilyen utasítást nem értesz miért nem keresel rá a neten, vagy miért nem kérdezed meg, hogy pl. Pascalban mit jelent a pl. Goto, vagy procedure utasítás, valaki tudna rá példát is mutatni?
Annyit tartanék butaságnak aki azt mondta, hogy a tömbhöz miért ne lehetne az indexet hozzárendelni, mert az nagy butaság, problémát nem okozhat. Persze az más kérdés, hogy sok sebből vérzik az algoritmusod( ami rossz meghatározás a pontosak akarunk lenni)
program buborekos;
uses crt;
var tomb:array[1..100] of integer;
number, i:integer;
masodik_ciklus_valto:integer
seged:integer;
BEGIN
ClrScr;
while(1) do begin
____Writeln('Hány számot akarsz beolvasni?');
____readln(number);
__if (number<100) and (number>0) then
____ break;
end;
___Writeln('Köszönöm megadását');
for i:=1 to number do begin
_____Writeln('Kérem a következő számot');
____readln(tomb[i]);
____end;
for j:=2 to number do begin
____masodik_ciklus_valtozo:=j-1;
____seged:=tomb[j]
____while(seged<tomb[masodi_ciklus_valtozo) and _______(masodi_ciklus_valtozo>0) do
________begin
__ ________tomb[masodik_ciklus_valtozo+1]=tomb[masodik_ciklus_valtozo];
________Dec(masodik_ciklus_valtozo);
________end;
___tomb[masodik_ciklus_valtozo+1]=seged;
__end;
Writeln('A rendezett tömb:');
for k:=1 to number do begin
____Writeln(tomb[k]);
____end;
readln;
end.
A __ jelek szóközök akarnak lenni. És részben azért van benne, hogy ne csak copyznod kelljen a kódomat.
Ez a beszúrásos rendezés kódja.
Bár a google-ban sok elemi algoritmus kódja benne van.
A tiedben a hibák a következők voltak:
-a[j+1]= te egyenlővé tetted j-1-el haelyett, hogy a[j]-vel tetted volna egyenlővé
Innen az egész elcsúszott és mivel nem csökkentetted j értéket, és az index eleve mindig pozitív szám, így soha nem lépsz belőle. Az integer tipus túlcsodul, ha ne tenné, akkor végtelen ciklust kapnál.
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!