Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <cstring>
- #include <vector>
- #include <algorithm>
- #include <iterator>
- using namespace std;
- #define MAX_INPUT 2000
- void printResults(vector<int> &someInt,
- vector<string > &someStr,
- vector<string > &mainData);
- void split(char *str, vector<int>& someInt,
- vector<string>& somestr,
- vector<string>& mainData);
- bool isInt(string s);
- void addToVect(string s,
- vector<string>* someStr,
- vector<int>* someInts);
- int main()
- {
- char* str = new char[MAX_INPUT];
- cout << "input characters" << endl;
- cin.getline(str, MAX_INPUT);
- if(sizeof(str) == 0){
- exit(0);
- }
- vector<int> someInts;
- vector<string> someStr;
- vector<string> mainData;
- split(str, someInts, someStr, mainData);
- sort(someInts.rbegin(), someInts.rend());
- sort(someStr.rbegin(), someStr.rend());
- printResults(someInts, someStr, mainData);
- delete [] str;
- return 0;
- }
- void split(char *str, vector<int> &someInt,
- vector<string> &somestr,
- vector<string>& mainData){
- string s = str;
- char temp[s.size()];
- strcpy(temp, s.c_str());
- char* c = strtok(temp, " ");
- mainData.push_back(string(c));
- addToVect(string(c), &somestr, &someInt);
- do{
- c = strtok(NULL, " ");
- if(c){
- mainData.push_back(string(c));
- addToVect(string(c), &somestr, &someInt);
- }
- }while(c);
- }
- #define ZERO_ASCII 48
- bool isInt(string s){
- unsigned int size = 1;
- if(s.size() == size){
- const char* c = s.c_str();
- int val = atoi(c);
- if(!val && (static_cast<int>(c[0]) != ZERO_ASCII)){
- return false;
- }
- }else{
- const char* str = s.c_str();
- int val = atoi(str);
- if(!val)
- return false;
- }
- return true;
- }
- void addToVect(string s, vector<string> *someStr,
- vector<int> *someInts){
- if(isInt(s))
- someInts->push_back(atoi(s.c_str()));
- else{
- someStr->push_back(s);
- }
- }
- void printResults(vector<int> &someInt,
- vector<string> &someStr,
- vector<string> &mainData){
- for(vector<string>::iterator i = mainData.begin();
- i != mainData.end(); ++i){
- string s = *i;
- if(isInt(s)){
- cout << someInt.back() << " ";
- someInt.pop_back();
- }else{
- cout << someStr.back() << " ";
- someStr.pop_back();
- }
- }
- cout << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement