Avatar
ngo.andrej
Člen
Avatar
ngo.andrej:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na ngo.andrej
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
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.