c++编程题,编写程序,给一段文本中的每个单词一个整数编码,输出文本的整数编码序列。

要求(1)编码从1开始,按单词出现的先后顺序依次编码;(2)重复单词不重复编码;(3)输出的每个编码占3位,不足的前面补0。输入:一段英文文本,一行,其中只有单词,单词由... 要求(1)编码从1开始,按单词出现的先后顺序依次编码;
(2)重复单词不重复编码;
(3)输出的每个编码占3位,不足的前面补0。
输入:一段英文文本,一行,其中只有单词,单词由一个或多个空格分隔末尾可能有多于的空格,文本中没有标点和数字。文本长度不超过1000,单词数不超过300,每个单词的字符个数不超过20,字母均小写。
输出:整数编码序列。
样例1输入:
hello hello how are you
样例1输出:
001001002003004
展开
 我来答
1259049661
2018-12-24 · TA获得超过1552个赞
知道小有建树答主
回答量:333
采纳率:88%
帮助的人:213万
展开全部

如下:(追加点财富吧,这题挺烧脑的)

#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
int main()
{
    string s, base[300], code[300];
    getline(cin, s);
    int i = 0, count = 0, start;
    while(i < s.length())
    {
        start = i;
        while(i < s.length() && s[i] != ' ')
        {
            i ++;
        }
        if(i != start)
        {
            base[count ++] = s.substr(start, i - start);
        }
        i ++;
    }
    int countCode = 0, j;
    bool b;
    for(i = 0; i < count; i ++)
    {
        b = false;
        for(j = 0; j < countCode; j ++)
        {
            if(code[j].compare(base[i]) == 0)
            {
                b = true;
                break;
            }
        }
        if(b)
        {
            cout<<setw(3)<<setfill('0')<<j + 1;
        }
        else
        {
            code[countCode] = base[i];
            countCode ++;
            cout<<setw(3)<<setfill('0')<<countCode;
        }
    }
return 0;
}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式