Kezdőoldal » Számítástechnika » Programozás » Hogyan lehet a konzolra...

Hogyan lehet a konzolra kiíratni az alábbi mintát?

Figyelt kérdés

//\\//\\//\\

\//\\//\\//\

\\//\\//\\//

/\\//\\//\\/

\\//\\//\\//


Ezt.

Akármekkora méret esetén működjön és akár 3 vagy 4 pálcikával is, tehát nem feltétlen csak 2 pálcikánként tudjon váltani.


2019. jún. 16. 16:42
1 2
 11/15 A kérdező kommentje:

Ez C++ dolog?



Mert nem C++-t tanulok, csak a fenti kód attól még (ilyen szempontból) nem okozott gondot.

2019. jún. 16. 18:55
 12/15 anonim ***** válasza:

Mint mondtam, ha mindenképp valamilyen containerbe akarod rakni a mintát, akkor sem változik sok minden, a mintát ugyanúgy generálnád ki, csak a kiíratás helyett behelyezed a tárolóba (mezei tömb helyett célszerűbb valami okosabb tárolót használni, aminek van push/append metódusa).


Amúgy az algoritmus amit írtam első ránézésre komplikáltnak tűnhet, de igazából néhány egyszerű észrevételből van kikövetkeztetve:

1. Minden pálcika K alkalommal ismétlődik, aztán vált, ez a sorminta

2. Minden sorminta eggyel 'hátrébbról' indul, mint a felette levő (feltételeztem, hogy az utolsó sor hibásan lett leírva, mert nem nagyon illik bele a mintába)


Mivel mindkét pálcika K alkalommal ismétlődik, ezért egy teljes ciklus 2*K pálcikából áll. Létrehozok tehát egy kezdőindexet, ami kezdetben 0.


Minden sorban létrehoztok egy belső indexet, ami az aktuális kezdőindextől indul, és aszerint íratok ki / vagy \ pálcikát, hogy az aktuális belső index kisebb, vagy nagyobb-e K-nál. A belső indexet minden pálcika után növelem 1-el modulo 2*K. És minden sor végén csökkentem a start indexet 1-el (2*K-1, ha 0 alá menne), mivel a következő sor 1-el hátrébbról indul.


Ezt amúgy számos másik módon is megoldhatod, például egy nagyon egyszerű megoldás még, ha létrehozol egy ciklikus láncolt listát, amibe eltárolsz egy teljes ciklust (2 pálcika esetén pl {/,/,\,\}), és eltárolsz egy kezdőpontot, ahonnan az adott sorminta indul, és ezen mész körbe-körbe M lépésnyit (ami a sor hossza), a kezdőpontot meg minden sornál 1-el hátrébb mozgatod.


Ha meg nem akarsz ciklikus listával vesződni, akkor ugyanez megoldható tömbbel is, csak picit körülményesebb, mert magadnak kell lekezelni a ciklikusságot.

2019. jún. 16. 19:14
Hasznos számodra ez a válasz?
 13/15 A kérdező kommentje:

Kétdimenziós char array-be sikerült belepakolni elsőre. :)



Én is lerajzoltam először a mintát egy lapra, megszámozgattam, végiggondoltam - mégis egy 7 for ciklust tartalmazó értelmetlen dolog jött ki.



Köszönöm, még párszor végiggondolom majd!

Jó lenne megérteni.

2019. jún. 16. 19:20
 14/15 A kérdező kommentje:

Ma kitaláltam, hogy szeretnék sakktábla-mintát is (duplán, tehát egy négyzet 2*2 karakter).

A jó hír az, hogy pár másodperc alatt rájöttem, mi az az egyetlen dolog, amit át kell írni ehhez az általad mutatott kódban. A rossz hír pedig az, hogy ennek ellenére még mindig nem teljesen értem. :D :D

2019. jún. 17. 19:26
 15/15 A kérdező kommentje:

Jártas vagy a C#-ban? Ha igen, van időd ránézni erre? :)


https://pastebin (pont) com/DtSyuMjR


A 2-szer 2-es mintához csak 1-2 dolgot kellett átírnom, de ha azt akarom, hogy 4 X 4 -esen, 3 x 3-ason stb működjön... belebonyolódtam.


Más irányból közelítettem meg.

Kérlek, ne bánts! :) Biztos szörnyű megoldás. Tudom, hogy van még mit tanulnom.



Illetve itt van a tegnapihoz hasonló megoldás, tömbbel, itt az a probléma, hogy ahol a nem üres mintával kezd, ott a második sortól kezdődően eggyel beljebb kerül; más hiba nincs, csak ez, elsőre ki se szúrtam:


https://pastebin (pont) com/VyZV34bL

2019. jún. 17. 21:16
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!