c++ - Trying count distinct strings, whats going wrong -


whats wrong in approach

#include<algorithm> #include<iomanip> #include<ios> #include<iostream> #include<string> #include<vector>  using std::cin;using std::cout; using std::endl; using std::setprecision; using std::string; using std::streamsize; using std::sort; using std::vector;  int main(){      string zz;     typedef vector<string> vs;      vs input,distinct;vector<int> count;     cout<<"enter words";     while(cin>>zz){         input.push_back(zz);     }      if(input.size()==0){         cout<<"enter atleast single    word";         return 1;     }      int i=0,j=0;     sort(input.begin(),input.end());     while(i!=input.size()){         int count2=0;         for(j=i;j<input.size();j++)         {             if(input[j]==input[j+1])             {                 count2++;             }else{                  break;             }         }         distinct.push_back(input[i]);         count.push_back(count2);         i+=count2;continue;         i++;     }      for(i=0;i<distinct.size();i++)     {         cout<<distinct[i]<<"\t           time"<<count[i]<<"\n";     }      return 0; } 

i using ubuntu 12.10 gcc4.7

the task 2 count distinct number of given inputs , display it. program ask input , doesnt stop taking input after end of file i.e ctrl+d

the problem not read loop. gets stuck in infinite loop in

while(i!=input.size()){ 

think end condition, , lines change i:

    i+=count2;continue;     i++; 

will i++ ever executed? i ever exactly equal input.size()? if there are repeated words? if there not?

.

.

.

ok, thought it? replaced loop this. comments should explain:

while(i < input.size()) {     // store current string     distinct.push_back(input[i]);      // skip same strings     int j = i;     while ( j < input.size() // don't go far             && input[i] == input[j] ) // , while duplicates         ++j;      // store count of how many skipped     count.push_back(j-i);      // move next *non-identical* string     i=j; } 

of course, there nicer ways using standard library algorithms, assume simple educational exercise.

note way round wrote && matters! other way round , try compare last string off end.


Comments

Popular posts from this blog

javascript - Count length of each class -

What design pattern is this code in Javascript? -

hadoop - Restrict secondarynamenode to be installed and run on any other node in the cluster -