Advertisement
Guest User

sort

a guest
Jan 4th, 2013
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.64 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <cstring>
  4. #include <vector>
  5. #include <algorithm>
  6. #include <iterator>
  7.  
  8.  
  9. using namespace std;
  10.  
  11. #define MAX_INPUT 2000
  12.  
  13. void printResults(vector<int> &someInt,
  14.                   vector<string > &someStr,
  15.                   vector<string > &mainData);
  16.  
  17. void split(char *str, vector<int>& someInt,
  18.            vector<string>& somestr,
  19.            vector<string>& mainData);
  20.  
  21. bool isInt(string s);
  22.  
  23. void addToVect(string s,
  24.                vector<string>* someStr,
  25.                vector<int>* someInts);
  26. int main()
  27. {
  28.     char* str = new char[MAX_INPUT];
  29.     cout << "input characters" << endl;
  30.     cin.getline(str, MAX_INPUT);
  31.     if(sizeof(str) == 0){
  32.         exit(0);
  33.     }
  34.  
  35.     vector<int> someInts;
  36.     vector<string> someStr;
  37.     vector<string> mainData;
  38.  
  39.     split(str, someInts, someStr, mainData);
  40.  
  41.     sort(someInts.rbegin(), someInts.rend());
  42.     sort(someStr.rbegin(), someStr.rend());
  43.  
  44.     printResults(someInts, someStr, mainData);
  45.  
  46.     delete [] str;
  47.     return 0;
  48. }
  49.  
  50.  
  51. void split(char *str, vector<int> &someInt,
  52.            vector<string> &somestr,
  53.            vector<string>& mainData){
  54.     string s = str;
  55.     char temp[s.size()];
  56.  
  57.     strcpy(temp, s.c_str());
  58.     char* c = strtok(temp, " ");
  59.  
  60.     mainData.push_back(string(c));
  61.     addToVect(string(c), &somestr, &someInt);
  62.  
  63.     do{
  64.         c = strtok(NULL, " ");
  65.         if(c){
  66.             mainData.push_back(string(c));
  67.  
  68.             addToVect(string(c), &somestr, &someInt);
  69.         }
  70.     }while(c);
  71.  
  72. }
  73.  
  74. #define ZERO_ASCII 48
  75. bool isInt(string s){
  76.     unsigned int size = 1;
  77.  
  78.     if(s.size() == size){
  79.         const char* c = s.c_str();
  80.  
  81.         int val = atoi(c);
  82.         if(!val && (static_cast<int>(c[0]) != ZERO_ASCII)){
  83.             return false;
  84.         }
  85.     }else{
  86.         const char* str = s.c_str();
  87.         int val = atoi(str);
  88.  
  89.         if(!val)
  90.             return false;
  91.     }
  92.  
  93.     return true;
  94. }
  95.  
  96. void addToVect(string s, vector<string> *someStr,
  97.                vector<int> *someInts){
  98.     if(isInt(s))
  99.         someInts->push_back(atoi(s.c_str()));
  100.     else{
  101.         someStr->push_back(s);
  102.     }
  103. }
  104.  
  105. void printResults(vector<int> &someInt,
  106.                   vector<string> &someStr,
  107.                   vector<string> &mainData){
  108.  
  109.     for(vector<string>::iterator i = mainData.begin();
  110.         i != mainData.end(); ++i){
  111.         string s = *i;
  112.         if(isInt(s)){
  113.             cout << someInt.back() << " ";
  114.             someInt.pop_back();
  115.         }else{
  116.             cout << someStr.back() << " ";
  117.             someStr.pop_back();
  118.         }
  119.     }
  120.     cout << endl;
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement