Kezdőoldal » Számítástechnika » Programozás » Delphiben programozok egy...

Delphiben programozok egy demonstrációs programot algoritmusokra, a beszúrásos rendezésnél azoban fellépet egy olyan probléma, hogy az algoritmusban a t[j-1]értéke átvált nullára igy hibásan működik a dolog. Valakinek valami ötlet?

Figyelt kérdés
2013. ápr. 2. 15:01
1 2
 1/11 anonim ***** válasza:
Kód nélkül nincs sok ötlet.
2013. ápr. 2. 15:02
Hasznos számodra ez a válasz?
 2/11 A kérdező kommentje:

begin // beszurasos rendezes leptetese

sz1:=sz1+1;

case sz1 of

1:listbox2.ItemIndex:=sz1;

2:begin

listbox2.ItemIndex:=sz1;

if sz2<9 then

sz2:=sz2+1

else sz1:=12

end;

3:begin

if t[sz2]<t[sz2-1] then

listbox2.ItemIndex:=sz1

else sz1:=1;

end;

4:begin

ment:=t[sz2];

label3.Caption:=inttostr(ment);

with stringgrid1 do

a:=cells[sz2,1];

listbox2.ItemIndex:=sz1;

end;

5:begin

sz3:=sz2;

listbox2.ItemIndex:=sz1

end;

6:listbox2.ItemIndex:=sz1;

7:begin

listbox2.ItemIndex:=sz1;

dec(sz3);

end;

8:begin

listbox2.ItemIndex:=sz1;

t[sz3+1]:=t[sz3];

with stringgrid1 do

cells[sz3+1,1]:=cells[sz3,1];

end;

9: begin

label2.Caption:=inttostr(t[sz3-1]);

label4.Caption:=inttostr(sz3);

listbox2.ItemIndex:=sz1;

if (sz3=0) or (t[sz3-1]<=ment) then

sz1:=9

else

sz1:=6;

end;

10: begin

listbox2.ItemIndex:=sz1;

t[sz3]:=ment;

with stringgrid1 do

cells[sz3,1]:=a;

end;

11: begin

listbox2.ItemIndex:=sz1;

sz1:=1;

end;

12: listbox2.ItemIndex:=sz1;

end;

ez a kód

2013. ápr. 2. 15:12
 3/11 anonim ***** válasza:
én nem látok a kódban ilyet, hogy t[j-1]. De amit ide te leírtál annak nem sok köze van a beszúrásos rendezés algoritmusához. Ahhoz minimum egy ciklusra lenne szükség.
2013. ápr. 2. 16:13
Hasznos számodra ez a válasz?
 4/11 A kérdező kommentje:
mert itt a t[j-1] helyett t[sz3-1] van, ez amit ide bemásoltam ez egy nyomógombhoz van, és minden kattintásnál ugrik egy lépést, így demonstrálja a beszúrásos rendezés algoritmusát, a listboxban az eredeti algoritmus van, de a léptetéshez nem hasznáhatom a ciklusokat, hanem muszáj változókkal megoldanom azért nem hasonlít az eredetire, de a működése az sz2 - i, sz-j , sz1 - kattintások számlálása
2013. ápr. 2. 16:25
 5/11 coopper ***** válasza:

Szia.


Gond lehet még az, hogy a a listboxban nullától indul a listaelemek indexelése (tehát az első elemre itemindex:=0 -val hivatkozunk), és ez nálad például nincs lekezelve. (és Listbox.items.count-1 -ig vannak az elemek)


Itt az elmélet, bár gondolom ez tudod : [link]


Sok sikert.

Üdv.

2013. ápr. 2. 16:27
Hasznos számodra ez a válasz?
 6/11 A kérdező kommentje:
Igen ezt tudom,meg a stringgrid is nullától indul, már a folytono rendezés, tehát amit csak elindítok egy timerben, az működik, és ott ezt, hogy 0-tól indulnok az elemek úgy küszöböltem ki a rendezésben hogy a for ciklus nem 2-től indul hanem egytől, illetve az a repeat untiljában is a feltételt úgy alakítítottam(ebben a kódban az repeat until helyett van az if, és ott eredetileg if(sz3=1)or... van,de ezírt írtam át nullára)
2013. ápr. 2. 16:36
 7/11 anonim ***** válasza:
De miért nem használhatsz ciklusokat?
2013. ápr. 2. 17:26
Hasznos számodra ez a válasz?
 8/11 A kérdező kommentje:
Mert léptetve mutatja hogy müködik a rendezés, és mivel nem program szállal csinálom így ha ciklust használnék, akkor nem tudok léptetni, mert a ciklus futni fog és nem lehet léptetni ami a ciklusban van.
2013. ápr. 3. 12:41
 9/11 anonim ***** válasza:
Már hogy a viharba ne lehetne?
2013. ápr. 3. 12:42
Hasznos számodra ez a válasz?
 10/11 anonim ***** válasza:

Dehogynem lehetne!

Biztos tisztában vagy a ciklusok használatával?

2013. ápr. 3. 22:52
Hasznos számodra ez a válasz?
1 2

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!