Форум — Development help 0 0 народ помогите плиз... есть файл... в нем нужно найти 10 наиболее часто встречающихся слов и вывести на экран + сколько раз встречаются... как сделать?? Ссылка
так покатит? (defun most-words (file cnt) "Display CNT most occured words in FILE." (let* ((words (get-words-from-file file)) (acw (sort-by-accumulator (accumulate-words words)))) (mapcar (lambda (el) (insert (stdout-device) (format "word: %s occurs %d times\n" (cdr el) (car el)))) (last (reverse acw) cnt)))) usage: (most-words "test.txt" 10) anonymous (02.04.03 06:46:44 MSK) Ссылка
эх, тряхнем стариной, подкинем студенту немного плюсиков, пусть порадует учителей незнакомыми им стандартными шуточками :-) #include <iostream> #include <map> #include <string> #include <iterator> int main() { using namespace std; typedef map<string, int> Counter; typedef multimap<int, string> InverseCounter; Counter counterL; InverseCounter inverseCounterL; for (istream_iterator<string> itL(cin); itL!=istream_iterator<string>(); ++counterL[*itL++]); for (Counter::iterator itL=counterL.begin(); itL!=counterL.end(); ++itL) inverseCounterL.insert( make_pair(itL->second,itL->first)); InverseCounter::reverse_iterator endL=inverseCounterL.rbegin(); int stoperL=0; for (InverseCounter::reverse_iterator itL= inverseCounterL.rbegin(); (itL!= inverseCounterL.rend()) && (stoperL!=10); ++itL, ++stoperL) cout<< itL->first<<"="<<itL->second<<endl; }; anonymous (02.04.03 13:26:17 MSK) Ссылка
cat a | awk 'BEGIN { RS = "[^A-Za-z]+" } { w[$0]++ } END{ delete w[""]; for(i in w) printf("%05d\t%s\n", w[i], i)}' | sort | tail anonymous (02.04.03 17:36:25 MSK) Ссылка
cat input.txt | \ while read -d " " a; do echo $a; done| \ sort | uniq -c | sort -r -n | head Как вариант. При условии, что все слова в файле разделены либо пробелом, либо переводом строки ARom anonymous (02.04.03 17:51:08 MSK) Ссылка