Kezdőoldal » Számítástechnika » Programozás » Hogyan oldjam meg Pascalban?...

Hogyan oldjam meg Pascalban? (mátrixok)

Figyelt kérdés

A feladat az, hogy irassunk ki egy mátrixot a köv módon:


Tegyük fel a beolvasott mátrix:

123

456

789


Ez alapján a kiírt mátrix ilyen kell legyen:

124

753

689


Nekem sikerült megoldanom valahogy, de a középső sor fordítva van, itt a kód:

[link]


Ezzel tulajdonképpen csak feldarabolom a mátrixot átlós sorokkal.


Előre is köszönöm a segítséget.



2016. jan. 11. 16:32
1 2
 11/18 A kérdező kommentje:
Igazából csak a számok sorrendje a lényeg, és az megvan. Remélem nem lesz baj, ha sikerül valahogy négyzetesben, azt küldöm el neki. Ma éjfélig kell elküldenki a megoldást.
2016. jan. 11. 18:47
 12/18 tabaki ***** válasza:

Na jó, egyelőre nem gyötröm magam az algoritmusod megértésével, tehát azért nem felelek. A tördelésre kézenfekvő lenne, hogy a számokat az új sorrendben tedd be egy másik tömbbe, és azt írasd ki.

Itt egy másik megoldással kísérletezem, amely szándékaim szerint továbbra is közvetlenül írná képernyőre a megcélzott tömbelemet, és a tördelést egy számláló alapján intézné. Még egyszer hangsúlyozom, hogy még nem látom át, mit csinálsz pontosan, tehát lehet, hogy marhaság, amit művelek, leszel szíves tesztelni:


program asd;


var

a: array[1..10,1..10] of integer;

// b: array[1..20] of integer;

sum, maxSum, szamlalo, i, j, n:integer;


begin

Write('Oldalhosszamlalo (1-10): ');

ReadLn(n);

maxSum := 2 * n - 1;


WriteLn(#10#13'A mátrix tartalma:');

szamlalo := 0;

for i := 1 to n do begin

      for j := 1 to n do begin

            Inc(szamlalo);

            a[i,j] := szamlalo;

            Write(a[i,j]:4);

            end;

      WriteLn;

      end;


WriteLn(#10#13'Bejárás:');

szamlalo := 1;

for sum :=1 to maxSum + 1 do

      begin

            for i := 1 to n do

                  for j := 1 to n do

                        if i + j - sum = 0 then

                              begin

                                    if sum mod 2 = 1 then

                                          Write(a[i,j]:4)

                                    else

                                          Write(a[j,i]:4);

                                    Inc(szamlalo);

                                    if szamlalo > n then

                                          begin

                                                szamlalo := 1;

                                                WriteLn;

                                          end;

                              end;

      end;

ReadLn;

end.

2016. jan. 11. 19:51
Hasznos számodra ez a válasz?
 13/18 tabaki ***** válasza:

Hoppá, benne hagytam két ronda helyzetű begint, az áttekinthetőség kedvéért inkább így ildomos írni:


WriteLn(#10#13'A mátrix tartalma:');

szamlalo := 0;

for i := 1 to n do

      begin

            for j := 1 to n do

                  begin

                        Inc(szamlalo);

                        a[i,j] := szamlalo;

                        Write(a[i,j]:4);

                  end;

            WriteLn;

      end;


Ezenkívül a beolvasáskor gondoskodni kéne róla, hogy csak megfelelő inputot fogadjon el, ezt rád bízom.

2016. jan. 11. 19:58
Hasznos számodra ez a válasz?
 14/18 tabaki ***** válasza:

A fenébe, ez meg egy hülye szerkesztési balfogás:

Write('Oldalhosszamlalo (1-10): ');

Helyesen:

Write('Oldalhossz (1-10): ');

2016. jan. 11. 20:14
Hasznos számodra ez a válasz?
 15/18 tabaki ***** válasza:

Ööö... és miért vonsz le maxSum-ból, ha ciklushatárként meg hozzáadsz?

maxSum := 2 * n - 1;

for sum := 1 to maxSum + 1 do


Így is ugyanaz:

maxSum := 2 * n;

for sum := 1 to maxSum do

2016. jan. 11. 20:32
Hasznos számodra ez a válasz?
 16/18 A kérdező kommentje:
Igen, később észrevettem azt a levonós hülyeséget, de már nem írtam le külön. Amúgy a feladat jó, bár lehet én nem informáltalak eléggé, de a kérés az, hogy a beolvasott mátrixnak, ami akármilyen számokból állhat, kell felcserélni a tagjait. Remélem érthető így. Köszönöm szépen!
2016. jan. 11. 21:25
 17/18 A kérdező kommentje:
Csak kicseréltem az első dupla fort, annyi volt az egész, tökéletesen működik!
2016. jan. 11. 21:34
 18/18 tabaki ***** válasza:
Akkor jó :)
2016. jan. 11. 21:45
Hasznos számodra ez a válasz?
1 2

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!