帮一下俺吧,这个俺不会

c++ 接受一个含有字母和数字的字符串,按正序输出所有字母的小写形式,按倒序输出所有数字

输入 Stu8de2nt
输出 student28

#include <iostream>
#include <string>
#include <cctype>
#include <algorithm>
#include <vector>
#include <iterator>

using namespace std;

int main() {
    string data, words, numbers;
    getline(cin, data);
    transform(data.begin(), data.end(), data.begin(), tolower);
    string::iterator it = data.begin();
    while (it!=data.end())
    {
        if (isalpha(*it))
        {
            words += *it;
        }
        else
        {
            numbers += *it;
        }
        it++;
    }
    string reserve_num(numbers.rbegin(), numbers.rend());
    cout << words << reserve_num << endl;
    return 0;
}

#include <iostream>
#include <stack>
#include <string>
using namespace std;

int main()
{
    string input, output;
    stack<char> number;
    cin >> input;
    for (int i = 0; i < input.length(); ++i)
    {
        if (input[i] >= 'a' && input[i] <= 'z')
            output += input[i];
        if (input[i] >= 'A' && input[i] <= 'Z')
            output += (input[i] + 32);
        if (input[i] >= '0' && input[i] <= '9')
            number.push(input[i]);
    }
    while (!number.empty())
    {
        output += number.top();
        number.pop();
    }
    cout << output;
    return 0;
}

#include <iostream>
#include<string>

using namespace std;
void main()
{
    string str = "";
    cin >> str;
    string str_new = "";
    string str_num = "";
    // cout << str.length() << endl;

    for (int i = 0; i < str.length(); ++i)
    {
        if (str[i] >= 'a' && str[i] <= 'z')
            str_new += str[i];
        else if (str[i] >= 'A' && str[i] <= 'Z')
            str_new += str[i] - 'A' + 'a';
        else if (str[i] >= '0' && str[i] <= '9')
            str_num += str[i];
    }

    for (int i = str_num.length() - 1; i>= 0; --i)
    {
        str_new += str_num[i];
    }

    cout << str_new << endl;
        
}

img