Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<string>
- #include<cstring>
- #include<stdio.h>
- #include<vector>
- #include <sstream>
- #include<iostream>
- int summ (int number){
- int sum = 0;
- while (number > 0){
- sum += number % 10;
- number = number / 10;
- }
- return sum;
- }
- std::string function(std::string &str){
- std::vector<int>numbers;
- int number = 0;
- for (size_t i = 0; i < str.length() + 1; ++i){
- if (str[i] != ' ' && str[i] != '\0') number *= 10;
- if (str[i] != ' ' && str[i] != '\0') number += (int)str[i] - 48;
- if (str[i] == ' ' || str[i] == '\0'){
- numbers.push_back(number);
- number = 0;
- }
- }
- int x;
- for (size_t i = 0; i < numbers.size() - 1; i++) {
- for (size_t j = 0; j < numbers.size() - i - 1; j++) {
- if (summ(numbers[j]) > summ(numbers[j+1])) {
- x = numbers[j];
- numbers[j] = numbers[j+1];
- numbers[j+1] = x;
- }
- if (summ(numbers[j]) == summ(numbers[j + 1])){
- std::stringstream ss;
- std::stringstream tt;
- ss << numbers[j];
- tt << numbers[j+1];
- if (ss.str().compare(tt.str()) > 0){
- x = numbers[j];
- numbers[j] = numbers[j+1];
- numbers[j+1] = x;
- }
- }
- }
- }
- std::stringstream ss;
- for (size_t i = 0; i < numbers.size(); i++){
- ss << numbers[i];
- ss << " ";
- std::cout << numbers[i] << std::endl;
- }
- str = ss.str();
- return str;
- }
- int main(int argc, char const *argv[]){
- std::string str = "2000 10003 1234000 44444444 9999 11 11 22 123";
- std::cout << function(str) << std::endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement