Avatar
kopka.simon
Člen
Avatar
kopka.simon:

Mám zadání vstup string, výstup string
Př: 3X4Y5Z

XXXYYYYZZZZZ

Sepsáno to mám přesně opačně tedy
Př: XXXYYYYZZZZZ

3X4Y5Z
Zde vkládám zmiňovaný kód

 {
            Console.WriteLine("Vitejte v programu ukol1");

            Console.WriteLine("Zadejte cisla: ");

            string zadani = Console.ReadLine();
            Console.WriteLine();
            char[] radek = zadani.ToCharArray();
            char tento = radek[0];
            int p = 1;

            for (int i = 0; i < zadani.Length; i++)
            {
                if (i != zadani.Length - 1)
                {
                    if (tento == radek[i + 1])
                    {
                        p++;
                    }
                    else
                    {
                        Console.Write(p + "" + tento);
                        tento = radek[i + 1];
                        p = 1;
                    }
                }
                else
                {
                    Console.Write(p + "" + tento);
                }
            }
            Console.ReadKey();
        }
    }
}

Věděl by někdo? Děkuji

Editováno 7.6.2015 23:09
 
Odpovědět 7.6.2015 23:08
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na kopka.simon
Jan Vargovský:

Ahoj, moc ti nerozumím, abych byl upřímný. Potřebuješ aby program převedl format 1A2B na ABB nebo format ABB na format 1A2B?

 
Nahoru Odpovědět 7.6.2015 23:19
Avatar
kopka.simon
Člen
Avatar
Odpovídá na Jan Vargovský
kopka.simon:

Potřebuji přesně ten první případ tedy formát 1A2B na ABB.

 
Nahoru Odpovědět 7.6.2015 23:23
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na kopka.simon
Jan Vargovský:

Máš nějaký teoreticky nápad, jak to zrealizovat? Ještě otázka, to číslo je v rozmezí 1 až 9 včetně, nebo to může být i vyšší?

 
Nahoru Odpovědět 7.6.2015 23:28
Avatar
kopka.simon
Člen
Avatar
kopka.simon:

Teoretický nápad by byl, ale hledám někoho kdo by ho dokázal převést do praxe. Může být i vyšší.

 
Nahoru Odpovědět 7.6.2015 23:36
Avatar
Jan Vargovský
Redaktor
Avatar
Jan Vargovský:

Skrz substring:

string zadani = "2X4Y10Z";
int i = 0;
while (i < zadani.Length)
{
    int start = i;
    while (Char.IsDigit(zadani[i])) i++;
    int pocet = int.Parse(zadani.Substring(start, i - start));
    Console.Write(new string(zadani[i++], pocet));
}

Parsování hned:

string zadani = "2X4Y10Z";
int i = 0;
while (i < zadani.Length)
{
    int pocet = zadani[i] - '0';
    while (Char.IsDigit(zadani[++i]))
    {
        pocet *= 10;
        pocet += zadani[i] - '0';
    }
    Console.Write(new string(zadani[i++], pocet));
}
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 7.6.2015 23:50
Avatar
kopka.simon
Člen
Avatar
Odpovídá na Jan Vargovský
kopka.simon:

Děkuji moc za radu a vyřešení mého problému.

 
Nahoru Odpovědět 8.6.2015 0:00
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na kopka.simon
Jan Vargovský:

Kdyžtak to označ jako řešení, jestli už nic nemáš :)

 
Nahoru Odpovědět 8.6.2015 17:52
Avatar
kopka.simon
Člen
Avatar
 
Nahoru Odpovědět 8.6.2015 22:44
Avatar
coells
Redaktor
Avatar
Odpovídá na Jan Vargovský
coells:
:-P
string zadani = "2X4Y10Z";

Console.WriteLine(
    string.Join("", new Regex(@"(\d+)(.)").Matches(zadani).Cast<Match>().
        Select((Match m) => new string(m.Groups[2].Value[0], int.Parse(m.Groups[1].Value)))
    )
);
 
Nahoru Odpovědět  +2 8.6.2015 23:17
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na coells
Jan Vargovský:
new Regex(@"(\d+)(.)")
    .Matches(zadani)
    .OfType<Match>()
    .ToList()
    .ForEach(m => Console.Write(new string(m.Groups[2].Value[0], int.Parse(m.Groups[1].Value))));

Co tohle? :)

Editováno 8.6.2015 23:26
 
Nahoru Odpovědět 8.6.2015 23:26
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Jan Vargovský
Jan Vargovský:

Beru z5, to tvoje je lepší :D

 
Nahoru Odpovědět 8.6.2015 23:32
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 12 zpráv z 12.