Black Friday je tu! Využij jedinečnou příležitost a získej až 80 % znalostí navíc zdarma! Více zde
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í.

Diskuze: Nalezení nejčastějšího prvku v poli a určení jeho početnosti

Aktivity
Avatar
Vopet
Člen
Avatar
Vopet:25.6.2018 17:37

Zdravím, mám za úkol sestavit program který načte text zadaný uživatelem, pokud je délka textu nula, čtení se musí zopakovat. Následně má program vypsat znak, který se v daném textu vyskytuje nejčastěji a kolikrát. Pokud se žádný znak v textu nevyskytuje vícekrát než jednou, tak tuto informaci vypsat.

Př.:
Text: motorka
Nejčastější znak: o
Počet výskytu: 2

Zkusil jsem: Program nyní načte text zadaný uživatelem a zopakuje čtení pokud je délka textu nula:

namespace One
{
    class Program
    {
        static void Main(string[] args)
        {
            string t;
            string[] a;
            do
            {
                Console.Write("Zadejte text: ");
                t = Console.ReadLine();
            } while (t.Length == 0);
            a = new string[t.Length];
            for (int i = 0; i < t.Length; i++)
            {
                a[i] = t.Substring(i, 1);
            }
            Console.WriteLine("Pro ukončení programu stiskněte libovolnou klávesu");
            Console.ReadKey();
        }
    }
}

Chci docílit: Jak tedy zjistit nejčastější prvek v poli a počet jeho výskytu? Díky za pomoc :-) ;-)

 
Odpovědět
25.6.2018 17:37
Avatar
Odpovídá na Vopet
Neaktivní uživatel:25.6.2018 17:53
  1. Zkusil jsi už aspoň něco?
  2. Myslím, že není problém používat <code>t[i]</code> nebo něco takového místo <code>a[i]</code>.
  3. Přejmenuj proměnné.
  4. Asi teda bude lepší sem napsat rovnou celý kód znovu.
Nahoru Odpovědět
25.6.2018 17:53
Neaktivní uživatelský účet
Avatar
Odpovídá na Vopet
Neaktivní uživatel:25.6.2018 18:59
string text;
do
{
    Console.Write("Zadejte text: ");
    text = Console.ReadLine();
} while (text.Length == 0);

var list = text
    .GroupBy(x => x)
    .Select(x => new { Char = x.Key, Count = x.Count() })
    .OrderByDescending(x => x.Count)
    .ToList();

Console.WriteLine("Znak\tPocet");
foreach (var item in list)
{
    Console.WriteLine($"{item.Char}\t{item.Count}");
}
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
25.6.2018 18:59
Neaktivní uživatelský účet
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 3 zpráv z 3.