第一次团队编程
GitHub地址:https://github.com/AllanIverson/wordCount
分工与设计
在进行一番讨论后,我们讨论了需要制定的几个功能,以及相应的分工
具体分工情况如下:
姓名 | 工作 |
---|---|
吴雅虹 | 输入函数 |
周丽榕 | 统计单词数 |
柯禧帆 | 统计词频 |
林斌祥 | 词组单词有效性测试 |
刘英杰 | 统计字符数 |
李承泽 | 单词比较,大小写转换 |
叶琦熠 | 单词排序 |
张昊 | 主函数,输出函数 |
数据经过输入函数的处理以后,进入统计单词数,词频,字符数以及有效性的判断,然后进行单词的比较排序,最后按照相应的顺序输出
代码部分
输入函数
主要思路为将文件中数据按行分割至一个字符串数组中,每一行为一个字符串作为一个数组元素,直至文件结尾结束,主要实现过程如下:
#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;
string str[50];
void input()
{
int i=0;
while(!cin.eof())//文件未结束
{
getline(cin,str[i]);//将数据分割成行,存入字符串数组中(包含空格)
i++;
}
}
统计单词
主要思路就是将字符串数组中的每个字符串进行单词个数统计,再用循环语句累加;对于每个字符串现将他们以空格分割,在对单一的字符串进行判别看是否符合单词格式,符合加一,主要实现过程如下:
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
using namespace std;
int word_num(string str[],int n)
{
int count;
for(int i=0;i<n;i++)
{
int num=0;
string s=str[i];int j=0;
char ch[5000];
strcpy(ch,s.c_str());
char *temp=strtok(ch," ");//将整行字符串以空格进行分割
//分割字符串并计算分割块所含单词个数
while(temp)
{
int flag=0;
if(strlen(temp)>=4)
{
for(int l=0;l<strlen(temp);l++)
{
if(l<=4&&(isalpha(temp[l])==0))
{
flag=0;break;
}
else{
if(isalpha(temp[l])!=0||(temp[l]>=48&&temp[l]<=57))flag++;
else
{
if(flag>=4) num+=1;
flag=0;
}
}
}
if(flag>=4) num+=1;
}
temp=strtok(NULL," ");
}
//计算整个text的单词个数
count+=num;
}
return count;
}
提交日志截图
运行截图
我们的wordcount还有一点点bug未解决,输入输出成文件形式还不行,时间来不及,还在测试,但是运行数据是可以的