A.谍报分析

A.谍报分析

      “八一三”淞沪抗战爆发后,*几次准备去上海前线视察和指挥作战。但都因为宁沪之间的铁路和公路遭到了敌军的严密封锁,狂轰滥炸,一直未能成行。
      特科组织,其主要任务是保卫**的安全,了解和掌握敌方的动向。经过一段时间的监听,谍报组获取了敌方若干份密报,经过分析,发现了密文中频繁出现一些单词,情报人员试图从单词出现的次数中,推出敌军的行动计划。
      请你编程,快速统计出频率高的前十个单词。

【输入】

密文是由英语单词(小写字母)组成,有若干段。单词之间由一个或多个空格分开。自然段之后可以用一个“,”或“.”表示结束。整个内容的单词数量不超过10000,不同的单词个数不超过500个。

【输出】

输出占10行,每行一个单词及出现的次数,中间一个空格。要求按频率降序输出,出现次数相同的单词,按字典序输出。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct haha
{
    char a[101];
    int num;
}s[505];
bool cmp(haha a,haha b)    //排序
{
    if(a.num==b.num)
        return strcmp(a.a,b.a)<0;
    return a.num>b.num;
}
int main()
{
    char b[101];
    int j=0;
    while(scanf("%s",b)!=EOF)
    {
        int temp=1;
        char c[101];
        memset(c,0,sizeof(c));
        int n=strlen(b);
        strcpy(c,b);
        if(b[n-1]==','||b[n-1]=='.')
            c[n-1]='\0';
        for(int i=0;i<j;i++)
        {
            if(strcmp(s[i].a,c)==0)
            {
                temp=0;
                s[i].num++;
                break;
            }
        }
        if(temp==1)
        {
            strcpy(s[j].a,c);
            s[j].num=1;
            j++;
        }
    }
    sort(s,s+j,cmp);
    for(int i=0;i<10;i++)
        printf("%s %d\n",s[i].a,s[i].num);
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值