NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
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.