Occurence problem: different ideas
Dear all,
I tried to solve the occurence problem: to find the distinct occurences
of a word in an input. I know that I could use map and other STD lib
functions. I tried to do it the hard way. I tried sth and it is working
but I could not structure my algorithm very well so I had to add some
more lines after thinking it on a paper draft. I am posting the whole
code and waiting different ideas.
First I sorted them with the sort function, after that they are in
nondecreasing order(and also grouped by this way) and then I have
counted the number of items in these groups by checking whether I am at
the end or not
1 #include <iostream>
2 #include <algorithm>
3 #include <string>
4 #include <vector>
5 int main(){
6
7 std::string x;
8 std::vector<std::string> input;
9 std::vector<std::string> sorted_input;
10 std::vector<std::string> words;
11 std::vector<int> counts;
12 std::vector<std::string>::size_type vec_sz;
13 int count=1;
14
15
16 while(std::cin >> x)
17 input.push_back(x);
18
19 sort(input.begin(),input.end());
20
21 std::string test=input[0];
22
23 vec_sz=input.size();
24
25 for(int i=0;i!=vec_sz;++i)
26 std::cout << input[i] << std::endl;
27
28
29 for(int k=1;k!=vec_sz;++k){
30
31 if(input[k]==test){
32 ++count;
33 if(k==vec_sz-1){
34 words.push_back(test);
35 counts.push_back(count);
36 }
37 }
38 else{
39 words.push_back(test);
40 counts.push_back(count);
41 test=input[k];
42 count=1;
43 if(k==vec_sz-1){
44 words.push_back(test);
45 counts.push_back(count);
46 }
47 }
48 }
49
50 vec_sz=words.size();
51 std::cout << "WORDS" <<"\t"<<"OCCURENCE#"<<std::endl;
52 for(int i=0;i!=vec_sz;++i)
53 std::cout << words[i]<<"\t" << counts[i]<<
std::endl;
54
55 return 0;
56
57 }