编写一个读取文本的程序,并显示一个字母,两个字母等单词的数量。单词由字符分隔:'',',',','和'。'。输入:一行文字,不超过1000个字符。输出:n行整数,表示具有相应长度的单词数,n是文本中最长单词的长度。
我想我对如何计算所有单词有一点想法,但strlen对我来说还不熟悉,不知道如何继续。任何帮助将不胜感激,谢谢。
#include <iostream>
using namespace std;
int main()
{
char a[1000];
short count[1000];
int wc = 0;
int max = 0;
for (int i = 0; i < 1000; i++)
count[i] = 0;
for (int i = 0; i < 1000; i++)
{
cin >> a[i];
if ('\n')
break;
}
for (int i = 0; i < 1000; i++)
{
if (a[i] != ' ' && a[i] != ',' && a[i] != ';' && a[i] != '.')
wc++;
else
{
if (wc != 0)
{
count[wc]++;
if (wc > max)
max = wc;
}
wc = 0;
}
}
for (int i = 0; i < max; i++)
cout << count[i] << endl;
return 0;
}
有人可以帮我解决吗?
答案 0 :(得分:0)
在这种情况下,你根本不需要读取字符串。你不关心每个单词的内容,只关心它的长度。因此,您可以一次只读取和处理一个字符。读取非分隔符时,请增加当前字大小。读取分隔符时,请检查当前字大小是否为非零。如果是,则递增该单词大小的计数。同时检查当前计数是否大于您之前记录的任何计数。如果是这样,请将最大计数设置为当前计数。
从1000个短裤的数组开始,所有设置为0作为不同单词大小的计数。
处理完所有输入后,您会记录最长的单词,因此请从数组中打印出从最大单词到最大单词的所有项目的计数。