Kezdőoldal » Számítástechnika » Programozás » Két tömb összefésülése?

Két tömb összefésülése?

Figyelt kérdés

Sziasztok!

Tegnap elkezdtem írni egy programot aminek a feladata az lenne, hogy összefésüli két tömb elemeit. Nos, ebben elakadtam. Tudnátok esetleg segíteni? Lehet hogy kiszúrja a szemem a hiba, de nem veszem észre.


[link]



2016. nov. 14. 15:26
1 2 3 4
 1/33 anonim ***** válasza:

Én nem tudom mi akar ez lenni.

Káosz.

2016. nov. 14. 16:48
Hasznos számodra ez a válasz?
 2/33 anonim ***** válasza:

Ha jól sejtem, akkor két tömböd van: t1 és t és ennek unióját állítanád elő u-ban.

Unió alatt azt érted, hogy két azonos érték csak egyszer szerepeljen.

A problémát az okozza, hogy rosszul begin-end-elsz.

2016. nov. 14. 16:59
Hasznos számodra ez a válasz?
 3/33 SimkoL ***** válasza:
A Pascal nagyon utálja, ha a for ciklus változóját 'babrálod' - jelen esetben 'i'.
2016. nov. 14. 17:06
Hasznos számodra ez a válasz?
 4/33 A kérdező kommentje:

Ezt a programot elmélet órán írtuk. Esetleg eltudnátok magyarázni lépésről lépésre, hogy pontosan mi mit csinál? Nagyjából értem, de vannak részek amik nem világosak.

[link]

2016. nov. 14. 20:00
 5/33 anonim ***** válasza:

Hasonlítsd össze ebben a programban hol a begin, és amit eredetileg belinkeltél, abban hol van.


Ha valami nem világos, egyszerűbb ha rákérdezel (akár priviben), mint 0-ról elmagyarázni a programot.

2016. nov. 14. 20:10
Hasznos számodra ez a válasz?
 6/33 SimkoL ***** válasza:
Szerintem nekünk is vannak részek.... Mi az a, b, u tömb, mennyi k kezdő értéke... kiragadtál pár sort, de 'Tedd a kezed a TV-re' és küldd az értelmet felénk.
2016. nov. 14. 20:11
Hasznos számodra ez a válasz?
 7/33 A kérdező kommentje:

Az a és b tömb két tömb random feltöltött elemekkel. Ahogy látom a az a tömb 8 elemű, a b tömb pedig 10. (feltételezem azért futnak a ciklusok addig ameddig)

Az u pedig egy üres tömb, amibe töltjük majd az a és b tömb unióját.(feltételezem hogy ennek akkorának kell lennie, hogy a két tömb beleférjen akkor is ha nincs közön szám, tehát 18) Nem tudom hogy ezzel mennyit mondtam el a dologról, de ennél többet sajnos én sem tudok róla, mivel ennyit írtunk le. Arról pedig hogy mennyit beszéltünk át, ne is beszéljünk inkább.


Nos, amit nem értek, az például a 3. sorban 'inc(k)' helyett szerintem k:=8+1 lenne, nem?

Ha jól értem, a dolog úgy működik, hogy elsőnek az unió tömb elemeit egyenlővé tesszük az a tömb elemeivel (ami 8 elem), majd a k változót, ami az unió tömb elemeinek a számát jelöli, növeljük egyel. (kérdés: miért növeljük egyel?) Ezután futtatunk egy ciklust a b tömb elemszámával, ami lényegében annak függvényében növeli a j változót hogy az már elérte-e a végső értéket vagy talált-e különböző elemeket az a és b tömbben. Ha talált, azt hozzáadja az unióhoz (itt a 12. sorban az az u[k] véletlenül nem u[j]?) majd növeli megint csak a k-t, ami az unió elemszáma. Ezt követően kiírja az unió tömböt.


Huhh.. Lehet vannak dolgok amiket rosszul értek, tudnátok korrigálni?

2016. nov. 14. 20:29
 8/33 anonim ***** válasza:

Fltételezem, hogy előtte k:=1 lenne,

az inc(k) pedig az for ciklusban lenne, amiben nem u[j] lenne hanem u[k]:

k:=1;

for j:=1 to 8 do

begin

  u[k]:=a[j];

  inc(k);

end;

Így k együtt növekszik az 'a' tömb átmásolásával.

De ha itt maradna az u[j], akkor jó lenne úgy is ahogy írod, hogy k:=9;


Ezután van egy ciklus (for i), amiben b[i] értékét hasonlítja össze egy másik ciklussal (repeat j) az 'a' tömb elemeihez. Ha nincs benne, akkor fogja belerakni u[k]-ba és növeli k-t.

Így a végén k-1 érték lesz u-ban, ezért ennyit ír ki.

2016. nov. 14. 20:58
Hasznos számodra ez a válasz?
 9/33 anonim ***** válasza:

Feltételezhetően a k kezdőértéke 8, csak ez a kódrészletben valamiért nincs benne foglalva.

Ilymódon az inc(k) valid, de amúgy a k:=9 is valid lenne.

Namost, az elejét jól eltaláltad, az 'a' tömbből bepakoljuk az elemeket az 'u' tömbbe. Ezután van egy külső ciklus (4. sortól 15. sorig) ahol az 'i' változóval iterálunk végig a 'b' tömb elemein. A cikluson belül futtatunk egy belső ciklust (7-9. sor), ahol a j-t növelgetjük 0-tól addig, amíg 8 nem lesz, vagy nem lesz a b[i] egyenlő az a[j]-vel. Tehát itt a 'j' változóval igazából azt ellenőrizzük, hogy szerepel-e a b aktuális (i-edik) eleme az 'a' tömbben. Ha a ciklus végén az a[j] neme gyenlő b[i]-vel, az azt jelenti, hogy a 'b' tömb aktuális eleme nem szerepel az 'a' tömbben, így bepakolhatjuk az 'u' tömb k-adik poziciójára. Ezután pedig megnöveljük k-t, mivel az mutatja az 'u' tömb következő üres indexét.

2016. nov. 14. 21:08
Hasznos számodra ez a válasz?
 10/33 A kérdező kommentje:
Akkor ha az elején az u[j]-be pakoljuk az a tömbök elemeit, akkor a végén miért az u[k]-ba pakoljuk a b tömb elemit? És miért u[i]-t írunk ki?
2016. nov. 14. 21:21
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!