Kezdőoldal » Számítástechnika » Programozás » Végtelen ciklust mi okoz e...

Végtelen ciklust mi okoz e keresés megvalósításában?

Figyelt kérdés

Interpolációs keresést szerettem volna megvalósítani, sajnos, végtelen ciklusba futok minden esetben.

[link]

A c kódot valószínűleg hibásan implementáltam, csak hogy hol a hiba, azt nem sikerült megtalálnom.


program Interpolation_search;

var

i, hi, low, mid, k : longint;

t : array[0..95000] of longint;

begin

for i := 0 to high(t) do

t[i] := i;

hi := high(t) -1;

low := 0;

mid := 0;

k := 498;

while ((t[hi] <> t[low]) and (k >= t[low]) and (k <= t[hi])) do

begin

mid := low + ((k - t[low]) * (hi - low) div (t[hi] - t[low]));

if (t[mid] < k) then

low := mid + 1

else

if (k < t[mid]) then

hi := mid - 1;

end;

if (k <> t[low]) then

k := -1

else

k := low;

if k = -1 then

writeln('hibavan');

end.



2021. febr. 3. 19:58
 1/6 anonim ***** válasza:
15%

Ezt a moslékot sztem tedd fel vmi kódmegosztó oldalra és linkeld be ide.

Amúgy meg, ha kiiratnád a változók tartalmát egy file-ba futásidő alatt, akkor magad is rájöhetnél, hogy hol hibáztál.

2021. febr. 4. 00:14
Hasznos számodra ez a válasz?
 2/6 tabaki ***** válasza:

„hogy hol a hiba, azt nem sikerült megtalálnom”


Azt nekem sem, mert ilyenkor már nemigen tudom átlátni, mi történik a programodban, meg amúgy is csak műkedvelő vagyok. Mindenesetre én is megpróbáltam írni egy változatot, ez mintha működne:

[link]

Az ellenőrzést és a te programoddal való összevetést szerényen rád hagyom. Az esetleges felsülésemet mentse a félkóma, amelyben a kód megfogant...

2021. febr. 4. 01:44
Hasznos számodra ez a válasz?
 3/6 tabaki ***** válasza:

Újabb kísérletek...


Object Pascal mód, a függvény értéke a result változóban adatik vissza:

[link]


Hasonló, csak a tömb cím szerinti átadásával. Így általánosabb, más tömbökben való keresésre is használható ugyanaz a függvény:

[link]

2021. febr. 4. 08:44
Hasznos számodra ez a válasz?
 4/6 A kérdező kommentje:

Tabaki: köszönöm szépen.

Tegnap próbálkoztam kódmegosztóra másolni, de sajnos, nem működött. Az általad használt kódmegosztóval próbálkoztam én is.

2021. febr. 4. 09:46
 5/6 A kérdező kommentje:
Köszönöm, szépen működik.
2021. febr. 4. 10:46
 6/6 A kérdező kommentje:
Első példakód valahol 22000 és 23000 közt akad ki - nagyobb elemszámú tömb esetén.
2021. febr. 4. 15:04

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, 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!