c++编程题,编写程序,给一段文本中的每个单词一个整数编码,输出文本的整数编码序列。
要求(1)编码从1开始,按单词出现的先后顺序依次编码;(2)重复单词不重复编码;(3)输出的每个编码占3位,不足的前面补0。输入:一段英文文本,一行,其中只有单词,单词由...
要求(1)编码从1开始,按单词出现的先后顺序依次编码;
(2)重复单词不重复编码;
(3)输出的每个编码占3位,不足的前面补0。
输入:一段英文文本,一行,其中只有单词,单词由一个或多个空格分隔末尾可能有多于的空格,文本中没有标点和数字。文本长度不超过1000,单词数不超过300,每个单词的字符个数不超过20,字母均小写。
输出:整数编码序列。
样例1输入:
hello hello how are you
样例1输出:
001001002003004 展开
(2)重复单词不重复编码;
(3)输出的每个编码占3位,不足的前面补0。
输入:一段英文文本,一行,其中只有单词,单词由一个或多个空格分隔末尾可能有多于的空格,文本中没有标点和数字。文本长度不超过1000,单词数不超过300,每个单词的字符个数不超过20,字母均小写。
输出:整数编码序列。
样例1输入:
hello hello how are you
样例1输出:
001001002003004 展开
1个回答
展开全部
如下:(追加点财富吧,这题挺烧脑的)
#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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询