Avatar
pajamac5
Člen
Avatar
pajamac5:

Zdravím chtěl bych poprosit o ukázku kódu jak udělat program který by generoval textovou řadu:a,aa,ab,ac,ad,a­e,af až po zzz.

Odpovědět 17.9.2014 18:18
Co tě nezabije se tě pokusí zabít znovu.
Avatar
qwertyW
Redaktor
Avatar
Odpovídá na pajamac5
qwertyW:

domácí úkol?
podle mě, se to dá napsat pomocí tohoto návodu http://www.itnetwork.cz/…e-split-join + cyklů

Editováno 17.9.2014 18:50
Nahoru Odpovědět  +1 17.9.2014 18:48
Programuji, tedy jsem.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na pajamac5
Jan Vargovský:

nemyslíš a, b, c, ..., z, aa, ab, ac, ..., zz, aaa, aab, ..., zzz?

 
Nahoru Odpovědět 17.9.2014 18:52
Avatar
Odpovídá na pajamac5
Neaktivní uživatel:

Veď si to skús naprogramovať sám nie? Keď ti to niekto spraví nikdy tomu nebudeš rozumieť...

Nahoru Odpovědět 17.9.2014 18:55
Neaktivní uživatelský účet
Avatar
pajamac5
Člen
Avatar
pajamac5:

Vít Gadurek:Moc děkuji hned to zkusím.

Jan Vargovský:Ano přesně to myslím.

Jerry:Není mi 9 abych to nezkusil strávil jsem nad tím dlouhou dobu ale bezvýsledně.A já když vidím cizí kód tak se to naučím :)

Nahoru Odpovědět 17.9.2014 19:01
Co tě nezabije se tě pokusí zabít znovu.
Avatar
pajamac5
Člen
Avatar
pajamac5:

Tak po dalším zkoumání se mi podařilo udělat kod který by měl fungovat ale dělá mi prapodivné věci zde je kód: http://www.itnetwork.cz/dev-lighter/430

A zde je výstup:

a
b
c
d
e
f
g
h
ch
i
b
a
b
b
b
c
b
d
b
e
b
f
b
g
b
h
b
ch
b
i

Nevíte někdo co s tím?

Editováno 17.9.2014 20:35
Nahoru Odpovědět 17.9.2014 20:35
Co tě nezabije se tě pokusí zabít znovu.
Avatar
tomisoka
Redaktor
Avatar
Odpovídá na pajamac5
tomisoka:

Nebylo by lepší použít ASCII tabulku?
Jinak tohle by mělo ( C# nepoužívám) vypsat do console znaky a-z :

int i;
for(i=(int) 'a'; i <= (int) 'z'; i++)
Console.WriteLine((char) i);

zbytek by neměl být problém.

 
Nahoru Odpovědět 17.9.2014 21:05
Avatar
coells
Redaktor
Avatar
Odpovídá na pajamac5
coells:

Jedna pro radost :-)

class Program
{
    static void Main(string[] args)
    {
        var text = string.Join(",", Combine(_alphabet, 3));
        Console.WriteLine(text);
    }

    public static readonly string _alphabet = "abcdefghijklmnopqrstuvwxyz";

    public static IEnumerable<string> Combine(string source, int length)
    {
        return (length > 0) ? Combine(source, length - 1).Concat(Combine(source, length - 1).SelectMany(p => source.Select(s => p + s))) : new [] { "" };
    }
}
 
Nahoru Odpovědět  +1 17.9.2014 21:38
Avatar
thes01
Člen
Avatar
thes01:

Mohlo by fungovat - nezkoušel jsem:

private void Vypis()
{
        for (int n = 1; i <= 3; i++) // počet písmen k vypisování na 1 řádku
        {
                for (int letter = (int) 'a'; letter <= (int) 'b'; letter++) // cyklus od a do z
                {
                        for (int _n = 1; _n <= n; _n++) // pro každý řádek se n-krát vypíše písmeno
                        {
                                Console.Write((char) letter);
                        }
                        Console.WriteLine(); // nový řádek
                }
        }
}
Nahoru Odpovědět 19.9.2014 16:13
Kdo chce, hledá způsoby, kdo nechce, hledá výmluvy.
Avatar
thes01
Člen
Avatar
Odpovídá na thes01
thes01:

oprava - v tom druhém cyklu má být for (int letter = (int) 'a'; letter <= (int) 'z'; letter++)

Nahoru Odpovědět 19.9.2014 16:14
Kdo chce, hledá způsoby, kdo nechce, hledá výmluvy.
Avatar
thes01
Člen
Avatar
Odpovídá na thes01
thes01:

jo :D a ještě v definici prvního cyklu tam má být všude proměnná n (síla zvyku.. :D)

Nahoru Odpovědět 19.9.2014 17:06
Kdo chce, hledá způsoby, kdo nechce, hledá výmluvy.
Avatar
coells
Redaktor
Avatar
Odpovídá na thes01
coells:

a jak vygeneruješ "abc"?

 
Nahoru Odpovědět 19.9.2014 18:14
Avatar
thes01
Člen
Avatar
thes01:

jo - to je pravda, špatně jsem si přečetl zadání..

Nahoru Odpovědět 19.9.2014 18:41
Kdo chce, hledá způsoby, kdo nechce, hledá výmluvy.
Avatar
thes01
Člen
Avatar
thes01:
class Program
    {
        static void Main(string[] args)
        {
            Console.Write(Generate("",4));
            Console.ReadLine();
        }

        private static string Generate(string prefix, int number)
        {
            if (number == 0)
            {
                return "";
            }

            if (number == 1)
            {
                return prefix + Environment.NewLine;
            }

            string output = "";

            for (int i = (int)'a'; i <= (int)'z'; i++)
            {
                output += Generate(prefix + (char)i, number - 1);
            }

            return output;
        }
    }

Takové míň funkcionální řešení než coellsovo

Nahoru Odpovědět 20.9.2014 12:21
Kdo chce, hledá způsoby, kdo nechce, hledá výmluvy.
Avatar
thes01
Člen
Avatar
Odpovídá na thes01
thes01:

zajímavé je, že pro n<=3 je rychlejší moje, ale pro vyšší n už je výrazně rychlejší coellsovo

Nahoru Odpovědět 20.9.2014 12:27
Kdo chce, hledá způsoby, kdo nechce, hledá výmluvy.
Avatar
coells
Redaktor
Avatar
Odpovídá na thes01
coells:

ani ne, důvod je vidět při prvním pohledu

 
Nahoru Odpovědět 20.9.2014 12:32
Avatar
thes01
Člen
Avatar
Odpovídá na coells
thes01:

..optimalizace v LINQu?

Nahoru Odpovědět 20.9.2014 13:13
Kdo chce, hledá způsoby, kdo nechce, hledá výmluvy.
Avatar
coells
Redaktor
Avatar
Odpovídá na thes01
coells:

:-D To bych nenazýval prvním pohledem. Zlepši práci se stringem a uvidíš.

 
Nahoru Odpovědět 20.9.2014 14:29
Avatar
thes01
Člen
Avatar
Odpovídá na coells
thes01:

no, do takové hloubky jazyka jsem se ještě nedostal - máš na mysli nějakou konkrétní nedokonalost?

Nahoru Odpovědět 20.9.2014 22:32
Kdo chce, hledá způsoby, kdo nechce, hledá výmluvy.
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 19 zpráv z 19.