none
Shoda řetězců

    Dotaz

  • Zdravím,

    řeším pro mě začátečníka docela těžký problém. Jedná se o spíše problém logický. Jsem student gymnázia ale programování se učím doma a ke svému programu bych potřeboval zjistit něco jako procentuální shodu 2 stringů. Vůbec nevím jak na to, nemusí být procentuální může to být třeba o kolik písmen se 2 string řetězce liší. Zkoušel jsem už vymyslet spoustu věcí, např jsem rozložil string na písmena a kontroloval jedno po každém, ale pokud tam nějaké chybělo tak do konce byli samé chybně a přitom nebyly špatně. Pak jsem to zase nakódoval tak, že když nějaké chybělo tak to fungovalo. Pokoušel jsem se to spojit dohromady ale nejde mi to :/ prosím poraďte. Pokud někdo nechápe mam například string a = "immigrant"; a string b = "imigrant";. A já chci zjistit o kolik písmen nebo o kolik procent se string b liší od a.

    Moc děkuju za rady, už se mi čoudí kouř z hlavy. :)   

    neděle 19. ledna 2014 21:55

Všechny reakce

  •  private void button1_Click(object sender, EventArgs e)
            {
                string a,b;			//proměnné pro obě slova
                double c=0, d=0,f=0;	//proměnné c,d pro počet písmen ve slovech a f pro rozdíl
                double Procenta=0;		//Pro přepočítání na procenta
                a = textBox1.Text;		//načtem první slovo do a
                b = textBox2.Text;		//načtem druhé slovo do b
                foreach(char A in a)	//Pro každé písmeno (A je pouze název) v a se zvíší c o 1 
                {
                    c++;
                }
                foreach (char B in b)	// Pro každé písmeno v b se zvíší d o 1
                {
                    d++;
                }
                if (c > d)			//c,d je počet písmen, nyní porovnáme
                {
                    f = c - d;		// rozdíl písmen
                    Procenta = 100-(d/(c/100));	//rozdíl v %
                    MessageBox.Show("první slovo je delší o "+f.ToString()+Environment.NewLine);
                    MessageBox.Show("první slovo je delší o "+Procenta.ToString()+"%");
                }
                else
                {
                    f = d - c;
                    Procenta = 100-(c/(d/100));
                    MessageBox.Show("první slovo je kratší o " + f.ToString());
                    MessageBox.Show("první slovo je kratší o "+Procenta.ToString()+"%");
                }
    Zde jsem vytvořil a okomentoval jednoduchý program pro Form, co snad pomůže
    • Navržen jako odpověď SkunkDJ pátek 24. ledna 2014 13:56
    pátek 24. ledna 2014 13:49
  • Ahoj,
    nevím, zda Tě to ještě trápí, ale pozdě jsem si všimla, kdy byl dotaz zveřejněný. Nicméně přikládám kousek kódu, jak by to bylo patrně nejlepší. Možností práce s řetězci je poměrně hodně, od jednoduchého počítání počtu znaků, až po složitější vyhledávání pod-řetězců, nahrazování kusů řetězců, číslování řádků atd. atd.

    // Vlastnost tridy System.String.Length
    // vraci jako int delku retezce...
    
    string txtBoxLeft = "vstupni data z leveho textBoxu";
    int delkaLevehoBoxu = txtBoxLeft.Lenght;

    Snad je to takto dostatečně jasné.  Ještě bych chtěla dodat, že existuje i řešení pro dynamicky plynoucí data, příkladem třeba z nějaké databáze, výrobní linky apod.
    Luccka



    úterý 4. března 2014 9:48