JosepRivaille

X30986: Ordenant paraules

May 23rd, 2015
295
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.96 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6.  
  7. struct Paraula {
  8.     string s;
  9.     int rep;
  10. };
  11.  
  12. typedef vector<Paraula> Llista_Paraules;
  13.  
  14.  
  15. bool ordenar(const Paraula& v1,const Paraula& v2) {
  16.     if (v1.rep > v2.rep) return true;
  17.     if (v1.rep < v2.rep) return false;
  18.     return (v1.s < v2.s);
  19. }
  20.  
  21.  
  22. //Pre:
  23. //Post:
  24. int main() {
  25.     int n;
  26.     while (cin >> n) {
  27.         vector<string> v(n);
  28.         for(int i = 0; i < n; ++i) cin >> v[i];
  29.         sort(v.begin(),v.end());
  30.         Llista_Paraules u(n);
  31.         u[0].s = v[0];
  32.         int k = 0;
  33.         for (int i = 0; i < n; ++i) {
  34.             if (u[k].s != v[i]) {
  35.                 ++k;
  36.                 u[k].s = v[i];
  37.                 u[k].rep = 1;
  38.             }
  39.             else ++u[k].rep;
  40.         }
  41.         Llista_Paraules w(k+1);
  42.         for (int i = 0; i < k+1; ++i) {
  43.             w[i].s = u[i].s;
  44.             w[i].rep = u[i].rep;
  45.         }
  46.         sort(w.begin(),w.end(),ordenar);
  47.         for(int i = 0; i < k+1; ++i) cout << w[i].rep << " " << w[i].s << endl;
  48.         cout << "----------" << endl;
  49.     }
  50. }
  51.  
  52. //JosepRivaille
Advertisement
Add Comment
Please, Sign In to add comment