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?
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).
Ź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?
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.
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.
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.