Halloweenská akce! Na stránce s dobitím bodů zadej dole kód STRASIDELNYCH20 a získej porci +20% bodů zdarma!
Akce končí 31.10. o půlnoci.

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. června 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. června 17:37
Avatar
Odpovídá na Vopet
Andy Scheuchzer:25. června 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. června 17:53
Za správnost neručím.
Avatar
Posix
Člen
Avatar
Odpovídá na Vopet
Posix:25. června 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. června 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.