C++指针处理字符串的一些问题(只能用new创建字符串)

求看下这道编程题

任务描述
本关任务:设计一个程序,让用户输入一行句子,数出句子中有多少个单词并输出,再让用户输入一串数字表示单词重新排序的顺序,最后按用户设定的顺序来输出一行新的句子。要求所有数组都只能用new来定义。

编程要求
根据提示,在右侧编辑器补充代码,用户输入的句子里只包含字母和空格(句子末尾没有空格),以回车完成输入,该句子最多100个字符,句子里最多10个单词。用户输入的一串数字是正常表示单词顺序的,不用考虑异常情况。

测试输入:
This is a good day to work
6543210
预期输出:
7
work to day good a is This

代码如下

#include<iostream>
#include<math.h>
#include <algorithm> 
using namespace std;
#pragma warning(disable:4996)
int main() {
    int number =1;
    char* get = new char[100];
    char** word = NULL;
    char* sorted = NULL;
    cin.getline(get, 100);
    for (int i = 0; i < strlen(get); i++) {
        if (get[i] == ' ') {
            number++;
        }
    }
    word = new char* [number];
    sorted = new char [number];
    int count = 0;
    for (int i = 0, j = 0; i < strlen(get); i++) {
        if (i == 0) {
            word[j] = new char[100]{ 0 };
        }
        // 这是存放单词的数组
        if (get[i] == ' ') {
        
            count = 0;
            i++,j++;
            if (j == number) {
                break;
            }
            word[j] = new char[100]{ 0 };
        }
        word[j][count++] = get[i];
    }
    cin >> sorted;
    
    for (int i = 0; i < number; i++) {
        cout << word[sorted[i]-48]<<" ";
    }
//
}

定义单词数组,根据字符串中空格的位置进行单词拆分。最后根据输入的数字作为下标进行单词输出