Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Makaron
Člen
Avatar
Makaron:11.1.2016 17:40

Ahojte, učím sa C# a skúšal som naprogramovať algoritmus, ktorý by vypísal obsah listu stringov do rámčeka. (Lepšie pochopíte z kódu). Zaujíma ma, či by sa dal napísať nejako lepšie / efektívnejšie, aby som vedel, čo zlepšovať :D

Console.WriteLine("Pišem do ramčeka!");
List<string> list = new List<string>();
list.Add("Hello");
list.Add("world!");
list.Add("Looka");
list.Add("I´m");
list.Add("in a frame.");

string longest = "";

foreach (string s in list)
{
    if (s.Length > longest.Length)
        longest = s;
}

for (int i = 0; i < longest.Length+3; i++)
    Console.Write("*");
Console.WriteLine("*");

foreach (string s in list)
{
    string medzery = "";
    int p = longest.Length - s.Length;
    for (int i = 0; i < p; i++)
    {
        medzery += " ";
    }
    Console.WriteLine("* " + s + medzery + " *");
}

for (int i = 0; i < longest.Length+3; i++)
    Console.Write("*");
Console.WriteLine("*");

Console.ReadKey();
 
Odpovědět
11.1.2016 17:40
Avatar
jt.e
Člen
Avatar
jt.e:11.1.2016 18:45

nevím jestli zlepšení, ale tady máš jinou verzi:

Console.WriteLine("Pišem do ramčeka!");

List<string> list = new List<string>();
list.Add("Hello");
list.Add("world!");
list.Add("Looka");
list.Add("I´m");
list.Add("in a frame.");

int max = 0;
foreach (string s in list) if (s.Length > max) max = s.Length;

StringBuilder stars = new StringBuilder(max + 4);
stars.Append('*', max + 4);

Console.WriteLine(stars);
foreach (string s in list)
{
    StringBuilder bu = new StringBuilder("* ", max + 4);
    bu.Append(s);
    bu.Append(' ', 1 + max-s.Length);
    bu.Append('*');

    Console.WriteLine(bu);
}
Console.WriteLine(stars);


Console.ReadKey();
 
Nahoru Odpovědět
11.1.2016 18:45
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.