C# týden C# týden
Pořádné programy s pořádnou klávesnicí zdarma. Více zde
Pouze tento týden sleva až 80 % na C# .NET

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

C# .NET .NET (C# a Visual Basic) Nalezení nejčastějšího prvku v poli a určení jeho početnosti American English version English version

Aktivity (3)
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
Andy Scheuchzer:25.6.2018 17:53
  1. Zkusil jsi už aspoň něco?
  2. Myslím, že není problém používat t[i] nebo něco takového místo a[i].
  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
Člověk, co si myslí, že snědl všechnu moudrost světa, i když tomu tak není.
Avatar
Posix
Člen
Avatar
Odpovídá na Vopet
Posix: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í
+1 bodů
Řešení problému
Nahoru Odpovědět 25.6.2018 18:59
Proč to dělat jednoduše, když to jde složitě.
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.