c++-C++ 基础趣味编程 字母频率

问题描述

C++ 基础趣味编程 字母频率

自行在网上下载英文文章,要求字母个数在1万以上,如果不到1万,请下载多篇合并,命名为data.txt。
对于data.txt,完成以下作业:
(1)统计26个字母出现的频率(出现次数在所有字母个数中占的百分比),并排序。
(2)输入一个字母,找出和它最亲密的三个字母(最亲密的意思是:和它一起相邻出现的次数最多)。
(3)找出出现频率最高的五个单词并排序。
(4)将前3个题目中的结果以合理的形式输出到文件result.txt。

解决方案

要详细代码,请采纳本问题,并且一个问题只解决一个需求。

解决方案二:

这是我用的文本,一部小说。
http://vdisk.weibo.com/s/BAFPyhehSsl

结果:

Q       0.0407655%
Z       0.0515099%
X       0.0850071%
J       0.22026%
V       0.592838%
K       1.04631%
P       1.07033%
F       1.25899%
B       1.32504%
C       1.61545%
G       1.80853%
Y       1.91535%
W       1.91914%
M       2.02216%
U       2.28634%
L       2.89403%
D       3.68027%
R       3.73873%
S       4.34548%
H       4.52718%
N       4.74144%
I       4.95886%
O       5.51377%
A       5.81303%
T       6.80816%
E       8.58983%
other   27.1312%
Press any key to continue

解决方案三:

代码,在VC6.0下编译通过

// MyApp1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>

using namespace std;

int arr[27];
int order[27];

int cmp(const void *a, const void *b)
{
    return arr[*(int *)a] - arr[*(int *)b];
}

int main(int argc, char* argv[])
{
    memset(arr, 0, sizeof(int) * 27);
    ifstream in("c:\1.txt");
    int all = 0;
    for (string s; getline(in,s); )
    {
        const char * pchar = s.c_str();
        int len = strlen(pchar);
        for (int i = 0; i < len; i++)
        {
            all++;
            if (pchar[i] >= 'a' && pchar[i] <= 'z')
            {
                arr[pchar[i] - 'a']++;
                continue;
            }
            if (pchar[i] >= 'A' && pchar[i] <= 'Z')
            {
                arr[pchar[i] - 'A']++;
                continue;
            }
            arr[26]++;
        }
    }
    for (int i = 0; i < 27; i++)
    {
        order[i] = i;
    }
    qsort(order, 27, sizeof(int), cmp);
    for (i = 0; i < 26; i++)
    {
        cout << (char)('A' + order[i]) << "t" << (double)arr[order[i]] * 100.0 / (double)all << "%" << endl;
    }
    cout << "othert" << (double)arr[26] * 100.0 / (double)all << "%" << endl;
    return 0;
}

如需要2 3 4问回答,请重新提问。

解决方案四:

(总字符数,含标点,316444)

解决方案五:

谢谢啦,帮大忙了。我会好好参考,编出自己的代码的!

时间: 2024-09-15 15:07:57

c++-C++ 基础趣味编程 字母频率的相关文章

replace-prolog 基础程序 替换字母

问题描述 prolog 基础程序 替换字母 刚学prolog,希望大家指点迷津. 题目要求是 ?- word_with_replacements([s, c, r, a, b, b, l, e], Word_with_replacements). Word_with_replacements = [s, c, r, e, b, b, l, a] ; false. ?- word_with_replacements(Word, [s, c, r, e, b, b, l, a]). Word = [

基础问题关于字母e下有红线

问题描述 基础问题关于字母e下有红线 include int main() { float p; p = (1 +0.09) e +10; printf_s("增长百分比为:%d", p); getchar(); return 0; } 解决方案 是不是因为e并没有定义的原因 解决方案二: 可以把p改成double型的变量

趣味编程网站Codecademy:上线7天获20万用户

7天发展20万用户,你能做到吗? 作者:J.J. Colao 希姆斯说:"编程是21世纪必备能力之一." 21岁的扎克·希姆斯和22岁的莱恩·布宾斯基坐在位于NoHo区的总部外面. 去年12月中一天凌晨3点,趣味编程网站Codecademy年仅21岁的首席执行官扎克·希姆斯(Zach Sims)刚刚回复完电子邮件,并花8.95美元注册了域名"codeyear.com".希姆斯的公司提供互动的在线课程,教授编程语言JavaScript,他决定利用新年到来之际向公众提供

CSDN攒课第二期课题“Spark基础与编程模型”开课啦,快来报名吧!

问题描述 亲爱的小主们,有个惊天好消息:CSDN个性化知识服务2015第二期"攒"课活动已经开始报名了!!!"攒"课第二期盛况回顾:想学习Spark的童鞋有福了,编辑为各位邀请到了七牛云技术总监陈超为各位讲"Spark基础与编程模型",是不是很激动呢?! 陈超,七牛云技术总监,专注于分布式计算与机器学习相关领域,是国内最早的Spark研究者与使用者之一.目前专注于Spark平台的大数据处理,尤其精通Scala语言.MachineLearning.

一个零基础自学编程的菜鸟真诚向各位高手请教!

问题描述 我是一个零基础,不是计算机专业的计算机编程爱好者,我非常喜欢编程做软件的那种感觉.但是我已经这里那里的公司混了一年了,依然感觉自己做不出来什么东西,目前最基本的SQLSERVER都不会用,但是目前又在一家公司硬着头皮学习,但是我知道我肯定留不长的.因为我的基础非常有限,因为家里穷,必须工作,否则连填饱肚子的钱都没有.我非常想突破自己现在的瓶颈,我不知道如何去突破.基本的C#语言看的懂,但是到运用他们完全不看书开发一项简单的任务时就不知所措,完全不知从哪里下手.书,我也买了不少,基本开了

javascript基础——String_JSP编程

学好基础是学好一个语言的基础,下面整理String,一起共勉学习. String和string不同,String是构造函数,string是变量的一种类型.(string是String的实例) 声明一个字符串之后使用,var str = "wo shi yi ge hao xue sheng" 是否包含 ①判断一个字符串是否被包含在另一个字符串中,包含返回true,不包含返回false str.includes(searchStr,formIndex) searchStr 查询包含的字符

趣味编程:C#中Specification模式的实现(参考答案

上一篇文章中我们利用C#语言的特性实现了一种轻量级的Specification模式,它的关键在于抛弃了具体的Specification类型,而是使用一个委托对象代替唯一关键的IsSatisfiedBy方法逻辑.据我们分析,其优势之一在于使用简单,其劣势之一在于无法静态表示.但是它们还都是在处理"业务逻辑",如果涉及到一个用于LINQ查询或其他地方的表达式树,则问题就不那么简单了--但也没有我们想象的那么复杂. 好,那么我们就把场景假想至LINQ上.LINQ与普通业务逻辑不同的地方在于,

趣味编程:C#中Specification模式的实现

今天有朋友在问了我这么一个问题:怎么实现OrWhere的功能?我猜测,他的意思是要实现这样的功能: static IEnumerable<int> MorePredicate(IEnumerable<int> source) { return source.OrWhere(i => i > 0); // 或所有的正数 } static void Main(string[] args) { var array = Enumerable.Range(-5, 10).ToAr

趣味编程:将事件视为对象(参考答案)

这次我们是要编写一个DelegateEvent<TDelegate>对象,提供它AddHandler和RemoveHandler的实现.事实上,在之前还有一篇文章中,我们搞了一个人模狗样的构造方式,但是它往往不适合用于实际使用过程中.因此,其实DelegateEvent<TDelegate>最关键的地方还是各种不同的"构造方式",使它可以用于各种情况. 方法一:直接提供添加删除的实现 在之前的文章里,已经有一些朋友提出了最简单的做法,即直接提供AddHandle