求看下这道编程题
任务描述
本关任务:设计一个程序,让用户输入一行句子,数出句子中有多少个单词并输出,再让用户输入一串数字表示单词重新排序的顺序,最后按用户设定的顺序来输出一行新的句子。要求所有数组都只能用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]<<" ";
}
//
}
定义单词数组,根据字符串中空格的位置进行单词拆分。最后根据输入的数字作为下标进行单词输出