Liczenie wielokrotnych wystąpień słów

0

Proszę o pomoc w tym zadaniu mam pomysł na to zadanie:

moim celem jest po tym jak użytkownik poprzez Console.Readline() poda zdanie umieszczenie każdego słowa w tablicy. tylko jak to zrobić jeśli jest to możliwe. Jeśli ktoś chce może zrobić całe zadanie.

Napisz program który przeanalizuje dany łańcuch pod kątem wielokrotnego występowania słów w tekscie. Przykładowo dla zmiennej łańcuchowej o zawartości: Kiedy idzie się po miód z balonikiem trzeba uważać żeby pszczoły nie wiedziały po co sie idzie - odpowiedział Puchatek - program powinien wypisac raport o słowach powielonych w tym tekście: "idzie" - 2 razy, "po" - 2 razy, "się" - 3 razy.

6
Miki0989 napisał(a):

Jeśli ktoś chce może zrobić całe zadanie.

Jesteśmy zaszczyceni. Naprawdę. Dawno nie czułem się taki dowartościowany

0

Drobiazg :), ale to była tylko sugestia jednak fajnie by było ;). Jak już znudzi ci się ta szyderka to możesz pomóc

0

@Miki0989:

Co masz i z czym masz problem

0

Napisałem w pierwszych linijkach, nie wiem w jaki sposób podzielić i gdzieś umieścić wyrazy ze zdania użytkownika aby je potem porównać

3
Miki0989 napisał(a):

Napisałem w pierwszych linijkach, nie wiem w jaki sposób podzielić i gdzieś umieścić wyrazy ze zdania użytkownika aby je potem porównać

Cięcie linii -> Split()

0
ZrobieDobrze napisał(a):
Miki0989 napisał(a):

Napisałem w pierwszych linijkach, nie wiem w jaki sposób podzielić i gdzieś umieścić wyrazy ze zdania użytkownika aby je potem porównać

Cięcie linii -> Split()

Spoko, dzięki

5

Wyrazy możesz pogrupować poprzez GroupBy z System.Linq i z każdej grupy wyciągnąć Count().

0

Wymyśliłem coś takiego tylko problem w tym ,że nie działa niby wiem czemu ale nie wiem jak zrobić żeby działało poprawnie

int x = 0;
string tekst = Console.ReadLine();
tekst.ToLower();

int x = 0;
string tekst = Console.ReadLine();
tekst.ToLower();

string[] words = tekst.Split(' ');



for (int i = 0; i < words.Length; i++)
{
    for (int j = 0; j < words.Length; j++)
    {
        if (words[i] == words[j])
        {
            x++;
            if(x > 1)
            Console.WriteLine("Słowo " + words[i] + " zostało powtórzone " + x + " razy");
        }
    }
}
3

Nazwij sobie tego 'x' co to naprawdę jest, bez samo-oszukiwania, i przeczytaj wtedy ten kod - czy jest licznikiem każdego słowa

A tak naprawdę właściwą strukturą danych do tego zagadnienia jest Dictionary<string,int> (minimum wysiłku na poznanie, ale to ważna struktura)

4
var input = "Kiedy idzie się po miód z balonikiem trzeba uważać żeby pszczoły nie wiedziały po co sie idzie - odpowiedział Puchatek";
var results = new Regex("\\W+")
    .Split(input)
    .GroupBy(g => g.ToLower())
    .Select(g => new { word = g.Key, count = g.Count() })
    .OrderBy(w => w.count)
    .Where(w => w.count > 1)
    .ToList();
Console.WriteLine(string.Join(", ", results.Select(w => $"{w.word} - {w.count}")));

Miłego RE