| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 545 人关注过本帖
标题:编程初学者的问题
只看楼主 加入收藏
orleans
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-4-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
编程初学者的问题
获取一个文件,必须要function call
计算文件里面字母的 “频率”A~Z(大小写不分)然后再计算里面 write space 的概率
再计算 大小写的概率
结果如下(举例)
Letter Frequencies:
A    10
B    13
C    20
D    0
E    17
F    4
Rest of Letters
Upper Case
50
Lower Case
17
White Space
10
搜索更多相关主题的帖子: function write 字母 
2010-04-05 12:48
yyblackyy
Rank: 6Rank: 6
等 级:侠之大者
帖 子:98
专家分:457
注 册:2010-3-31
收藏
得分:20 
#include<iostream>
#include<fstream>
#include<cctype>
#include<iomanip>
#include<cstdlib>
#define Maxpath 80                                    //文件名最大长度                              
using namespace std;
//functions   
int fre[26];                                                 //记录次数的
const char str[]="abcdefghijklmnopqrstuvwxyz";             // 字母表
static int up=0,low=0,wsp=0,total=0;                     // up 为 大写的个数 low为小写的,wsp为空,制表符。。。total 总数
void frequency(char ch);                             //记录大小写的函数
void count(char filename[]);                        //记录总的函数
void print();                                        //打印的函数
int main()
{
   
    char filename[Maxpath];                      //文件名
    cout<<"输入文件全名:"<<endl;
    cin.getline (filename,Maxpath);            //获得文件名
    count(filename);                         //记录个数
    print();                                 //打印
    return 0;
}
//************************************************
void frequency(char ch)
{
    for(int i=0;i<26;i++)                              
        if(ch==str[i])                    //判断是哪个字母,那个字母代表的个数加一
        {
            fre[i]++;
            break;                         //跳出本次循环
        }
}
//************************************************************
void count(char filename[])
{
    fstream istr;
    char ch,ch2;
    istr.open (filename,ios::in);             //打开文件 打不开退出
    if(istr.fail ())
    {
        cout<<"Can't open!"<<endl;
        exit(1);
    }
   
    do                                      //记录个数
    {
        ch=istr.get ();
        if(isspace(ch))                        //判断是否是 space
            wsp++;
        else if(isalpha(ch))                    //判断是否是 字母
        {
            if(isupper(ch))                        //是否是大写
                up++;                       
            else                                //是否是小写
                low++;
            ch2=tolower(ch);                     //转成小写 配合str[] 字符串
            frequency(ch2);                  //记录abc的单独的个数      
        }
        else
            ;
        total++;                      //总数+1
    }while(!istr.eof());
    total-=1;                        //最后的总数      
}
//*****************************************************************
void print()
{
int Count=0;
//cout<<"输入要显示的最小个数的字母"<<endl;   //这里可以添加一点小的功能
//cin>>Count;
cout<<"Letter Frequencies:"<<endl;               
for(int i=0;i<26;i++)                        
{    if(fre[i]>Count)                //判断个数 只显示个数大于Count的字母
    cout<<char(toupper(str[i]))<<setw(6)<<fre[i]<<endl;          //格式输出如:
}              //大写的字母             //  对应的次数                          A      3
cout<<endl;                                                                  // B      4
cout<<"Rest of Letters"<<endl;                                         //       C      5
cout<<"Upper Case"<<endl;                      //up
cout<<up<<endl;
cout<<"Lower Case"<<endl;                 //low
cout<<low<<endl;
cout<<"White Space"<<endl;          // space
cout<<wsp<<endl;
cout<<"Total char"<<endl;         
cout<<total<<endl;            //总数
}
2010-04-05 16:04
orleans
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-4-5
收藏
得分:0 
#include<cctype>
int fre[26];
cin.getline (filename,Maxpath);            //获得文件名 {could you change this one? I never learned this yet}
2010-04-05 22:57
yyblackyy
Rank: 6Rank: 6
等 级:侠之大者
帖 子:98
专家分:457
注 册:2010-3-31
收藏
得分:0 
添加 #include<cstdio>
gets(filename); 能用中文不偶E文。。。。。。
2010-04-06 12:48
lyb151
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2010-2-6
收藏
得分:0 
学习了。。。谢谢。。
2010-04-07 21:04
hyh111
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-4-7
收藏
得分:0 
。。。
2010-04-08 21:07
快速回复:编程初学者的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018771 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved