Avatar
Slavomir
Redaktor
Avatar
Slavomir:

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. ledna 17:40
Avatar
jt.e
Člen
Avatar
jt.e:

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. ledna 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.