Egy mátrix elemeit, hogyan tudom átírni egy vektorba?
Valamennyire már megvan, de csak a mátrix legutolsó elemét teszi bele a vektorba.
Turbo Pascalban csinálom.
Nem tudna valaki segíteni, hogy miért csak egy elemet ír át a vektorba?? Köszönöm előre is!
A kérdés már nem él! :D
Sikerült!:)
Most az lenne, hogy-hogy tudnám egy 10x10-es mátrix
5. és 10. sorát felcserélni?:S
Nos, bár elég régi kérdés, azért megválaszolom.
Csinálj egy eljárást, amely tetszőleges két sort képes felcserélni.
Procedure SwapRows(m :Matrix, row1 :Integer, row2: Integer)
Írj egy függvényt, amely tetszőleges sor tartalmát adja vissza vektorban. Ezt fogja használni a SwapRows.
Function GetRow(m :Matrix, row :Integer) :Vector
Illetve kell még egy másik eljárás, amely tetszőleges sort felülír egy adott vektorral
Procedure SetRow(m :Matrix, row :Integer, data :Vector)
Mint láthatod, a SwapRows implementációja már ki is kristályosodott.
Procedure SwapRows(m :Matrix, row1 :Integer, row2 :Integer)
˙˙˙˙buffer :Vector;
Begin
˙˙˙˙buffer := GetRow(m, row1);
˙˙˙˙SetRow(m, row1, GetRow(m, row2));
˙˙˙˙SetRow(m, row2, buffer);
End;
Kis segítségként még súgok egy picit, de elvileg már magától is mennie kell:
Function GetRow(m :Matrix, row: Integer) :Vector
˙˙˙˙result :Vector;
˙˙˙˙i :Integer;
Begin
˙˙˙˙For i := 0 To GetWidth(m) Do
˙˙˙˙Begin
˙˙˙˙˙˙˙˙result[i] := GetValue(m, i, row);
˙˙˙˙End;
˙˙˙˙GetRow := result;
End;
A SetRow meg nagyjából ugyanez, csak bemenetként kapja a Vectort, azon megy végig és meghív egy SetValue(m, i, row, data[i]) -t.
Természetesen az implementáció nem teljes, a hiányzó részleteket magadnak kell belepótolnod. Itt-ott syntax errort is rejthet, mivel a Pascal tudásom mára "kissé" megfakult.
Szintén érdemes elgondolkodni a statikus adatok pointerekkel való leváltásán.
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!