Zliczanie wystąpień każdego ze słów użytych w analizowanym pliku

0

Witam, napisałem już dzisiaj jeden temat i szybko mi odpisano. Nie chcę wyjść na spamera ale znowu potrzebuję pomocy :P Tym razem chodzi o zliczanie każdego ze słów w danym pliku, nie mam pojęcia jak się za to zabrać, a muszę przy tym wykorzystać listę jedno lub dwukierunkową. Jakieś pomysły?

0

Zadanko właściwie bardzo proste. Kolejne słowa odczytasz funkcją fscanf używając formatu %*s. Format %s zapewne znasz, służy do wczytania słowa (ciągu znaków oddzielonego znakami białymi). Gwiazdka służy do tego, aby odczytanej wartości nie zapisywać w żadnej zmiennej. fscanf zwróci wartość EOF kiedy dojdziemy do końca pliku.

Finalnie będzie to coś takiego:

while (fscanf(plik, "%*s") != EOF) ilosc_slow++;

Oczywiście plik trzeba jeszcze wcześniej otworzyć (fopen) w trybie tekstowym a po zakończeniu odczytu zamknąć (fclose).

0

Źle zrozumiałeś, ale może to ja źle sforumowałem problem ;p Nie chodzi o zliczenie ilości słów w tym programie (bo to owszem jest banalne), ale o podliczenie ile razy występuje każde ze słów w danym pliku.

Nie przychodzi mi na myśl nic innego jak wczytywanie 1 słowa i sprawdzanie go ze wszystkimi pozostałymi w pliku, ale w "2 kroku" takiej pętli nie wiem jak bym miał zrobić, żeby zliczanie danego słowa się nie powtarzało. I jak do tego wykorzystać listy?

1

Teraz czaję. A więc wczytujesz sobie kolejne słowa i umieszczasz je na liście. Następnie sortujesz listę. Na końcu zliczasz powtórzenia.

//EDIT
Może być też inaczej. Niech elementem listy będzie słowo + ilość jego wystąpień.
Wczytujesz słowo. Wyszukujesz słowo na liście, jeśli nie ma to dodajesz (z licznikiem 0). Zwiększasz licznik słowa o 1. I tak dla wszystkich słów w pliku.

0

No dobra, tylko w jaki sposób mogę szukać słów na liście? I czy przypadkiem takim sposobem zliczanie tego samego słowa nie będzie wykonywane kilka razy? Czy w ogóle da się uniknąć tego powtarzania? Sory, ale akurat list nie mam przećwiczonych, dopiero niedawno się z nimi spotkałem, a jestem zmuszony użyć ich w programie.

1
Chudej napisał(a)

No dobra, tylko w jaki sposób mogę szukać słów na liście?
Porównując każde kolejne słowo listy ze słowem wyszukiwanym.

Chudej napisał(a)

I czy przypadkiem takim sposobem zliczanie tego samego słowa nie będzie wykonywane kilka razy?
Tak. Będzie wykonywane tyle razy, ile razy wystąpi w pliku. O to właśnie chodzi.

Sory, ale akurat list nie mam przećwiczonych, dopiero niedawno się z nimi spotkałem, a jestem zmuszony użyć ich w programie.
To masz zadanko jak znalazł do przećwiczenia list.

1 użytkowników online, w tym zalogowanych: 0, gości: 1