Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno C# - tisk na konzoli?

Jeste mam otazku ohledne tisku na konzoli do sloupcu asi pomoci Console.Write()... Ale mam problem, potrebuju to vytisknout do trech sloupcu... Tzn.

Console.WriteLine("neco"); Console.WriteLine("neco");
Console.WriteLine("neco "); Console.WriteLine("neco");
Console.WriteLine("neco "); Console.WriteLine("neco");

Tento kod se mi vypise pod sebe. Ale ja potrebuju aby se mi vytiskl takto ve sloupcich stim ze, nejdrive vitisknu v cyklu prvni sloupec a pak druhy... Nevite?

Předmět Autor Datum
Konzola takéto veci, ako je postupné vypisovanie do stĺpcov, už z princípu neumožňuje (presnejšie po…
los 04.02.2007 23:01
los
sme sa zhodli :))
MM.. 04.02.2007 23:04
MM..
V konzoli (vseobecne) musis pisat po riadkoch, je lepsie program urobit tak aby vypisoval po riadkoc…
MM.. 04.02.2007 23:02
MM..
jj uz to tisknu po radcich, ale jeste me zajima, jak tisknout pevne od leveho kraje... Skousel jsem…
Vlada 04.02.2007 23:08
Vlada
Ak poznáš nejakú maximálnu dĺžku slova (alebo takú dĺžku slova, po prekročení ktorej Ti už nevadí, ž…
los 04.02.2007 23:50
los
Diky moc chlapce!!! Jen tam stacilo dat \t... fakt jsi mi moc pomohl...:-) Diky i uzivateli mm...
Vlada 05.02.2007 00:28
Vlada
Precitaj si poriadne aj co pisem nizsie, tabelator (\t) ti pomoze len do rozdielu dlzky slov 8 znako…
MM.. 05.02.2007 00:42
MM..
jj pouzil jsem -10... uz to vsechno chapu. diky poslední
Vlada 05.02.2007 15:46
Vlada
Ta 10 neznamena pocet bodov od laveho okraja (konzola nema body ale znaky, a nie je to ani nic od la…
MM.. 05.02.2007 00:00
MM..

Konzola takéto veci, ako je postupné vypisovanie do stĺpcov, už z princípu neumožňuje (presnejšie povedané: dá sa to, ale nestojí to za tú námahu).

Takže ak chceš vypisovať niečo do dvoch stĺpcov, musíš si to najprv pripraviť v pamäti (v reťazci). Pre "neco1", "neco2", "neco3" a "neco4" by si si vytvoril napr. dva reťazce "neco1\tneco3" a "neco2\tneco4", ktoré by si potom vypísal pod sebou na konzolu.

Ja by som sa takémuto formátovaniu výstupu vyhol a písal to jednoducho pod seba. Konzola nie je o tom, aby to pekne vyzeralo.

V konzoli (vseobecne) musis pisat po riadkoch, je lepsie program urobit tak aby vypisoval po riadkoch (vysledky ulozit do pola alebo premennych a vypisat na konci ak mas vsetky potrebne informacie).
Mozes pouzit Console.Write ak nechces hned na dalsi riadok, pre dalsi stlpec snad pojde pouzit tabelator (znak \t), ale to si nie som u win konzoly isty.

jj uz to tisknu po radcich, ale jeste me zajima, jak tisknout pevne od leveho kraje...
Skousel jsem to pomoci:

Console.Write("{0,10:D}", neco); // ta 10 znamena pocet bodu od leveho kraje

Ale kdyz mam ruzne dlouha slova hned u kraje (seznam slov) a naprovo od nich ciselne polozky, a chci aby to vypadalo pekne zformatovane do sloupcu, tak to mam pomoci teto metody stejne rozhazene... Nevim, jestli mi rozumite...

Ak poznáš nejakú maximálnu dĺžku slova (alebo takú dĺžku slova, po prekročení ktorej Ti už nevadí, že sa formátovanie rozsype), tak môžeš použiť rovnaký spôsob formátovania ako na čísla, čiže niečo takéto:

Console.WriteLine ("{0,10}\t{1,10:D}", "abc", 123);

Precitaj si poriadne aj co pisem nizsie, tabelator (\t) ti pomoze len do rozdielu dlzky slov 8 znakov, pri vacsich rozdieloch dlzky slov to budes mat zas zle, je dobre pouzit ten format {...} pre vypis textu (slova), nielen pre vypis ciselnej polozky. Tabelator (\t) potom nepotrebujes.

P.S. ak chces aby bolo slovo zarovnane zlava, pouzi v tom formate zaporne cislo, t.j. napr. -10 namiesto 10, ak chces zarovnat slovo na 10znakov tak aby slovo bolo na lavej strane tych 10 znakov.

Ta 10 neznamena pocet bodov od laveho okraja (konzola nema body ale znaky, a nie je to ani nic od laveho okraja). http://msdn2.microsoft.com/en-us/library/txafckwd(V S.80).aspx
to cislo znamena "preferred formatted field width" to znamena sirku aku chces aby malo to "neco" po vypisani, takze to pouzi na vypis tych slov a daj si tam nieco vacsie (ako maximalne dlhe slovo, napr. 20 ak max. slovo ma 20 znakov).
P.S. odporucam este za to potom dat aspon jednu medzeru alebo dvojbodku apod., ak by niektore slovo malo tych 20znakov alebo viac, aby bola aspon jedna medzera alebo nieco medzi slovom a tym dalsim co za tym v riadku nasleduje.

Zpět do poradny Odpovědět na původní otázku Nahoru