IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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
ngo.andrej
Člen
Avatar
ngo.andrej:3.5.2013 12:33

Ahoj, snažím se udělat program, který spočítá počet slov v textu a pokud jich je sudý počet, přepíše ve všech lichých slovech první písmeno na velké. Pokud bude počet lichý, přepíše ve všech sudých slovech poslední písmeno na velké. např: Kde se vzala, tu se vzala, byla tam. -> Kde Se vzala, Tu se Vzala, byla Tam.

Zatím mám tohle

private void button1_Click(object sender, EventArgs e)
        {

            textBox2.Text = "";
            int pocetInt = 0;
            string vety = textBox1.Text;
            Queue<char> znaky = new Queue<char>();
            char[] set = new char[4] { '.', '!', '?', ' ' };
            string[] pole = vety.Split(set, StringSplitOptions.RemoveEmptyEntries);
            string output = "";
            foreach (char p in vety)
            {
                if (p == '.' || p == '!' || p == '?')
                    znaky.Enqueue(p);
            }
            for (int i = 0; i < pole.Length; i++)
            {
                if (znaky.Count > 0)
                {
                    pocetInt++;
                }
                else
                {
                    output += "ŘETĚZEC NEOBSAHUJE VĚTU";
                }
            }
            if (pocetInt % 2 == 0)
            {
                foreach (char p in vety)
                {
                    if (p == '.' || p == '!' || p == '?')
                        znaky.Enqueue(p);
                }
                    textBox2.Text += SpracujVetu(vety, false) + znaky.Dequeue();

            }
        }
        static string SpracujVetu(string veta, bool opacne)
        {
            //Tu bude ulozeny nas spracovany retazec
            StringBuilder upravenyText = new StringBuilder();

            char predZnak = ' ';
            //Prejdi kazdy znak vo vete
            for (int i = 0; i < veta.Length; i++)
            {
                //Ak predch. znak bola medzera
                if (char.IsWhiteSpace(predZnak))
                {
                    //true
                    upravenyText.Append(
                        (!opacne ? char.ToUpper(veta[i]) : char.ToLower(veta[i]))
                        );
                }
                else
                {
                    //false
                    upravenyText.Append(
                        (!opacne ? char.ToLower(veta[i]) : char.ToUpper(veta[i]))
                        );
                }

                predZnak = veta[i];
            }

            return upravenyText.ToString();
        }

Snažil jsem se rozdělit na sudý, ale nevím jak spojit slova s prvním velkým počátečním a slova normální.
Děkuji za každou radu. :)

 
Odpovědět
3.5.2013 12:33
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na ngo.andrej
David Hartinger:3.5.2013 13:29

Proč si ta slova ve větě nesplitneš podle mezer a čárek?

Editováno 3.5.2013 13:29
Nahoru Odpovědět
3.5.2013 13:29
New kid back on the block with a R.I.P
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.