| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 525 人关注过本帖
标题:如何改进这个问题???
只看楼主 加入收藏
orleans
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-4-5
结帖率:100%
收藏
已结贴  问题点数:15 回复次数:8 
如何改进这个问题???
题目是,读取一个文件夹的字母,然后把每个字母的频率计算出来,还有write space, 大小写,总数都得计算。
EX:
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
问题是,结果是26个字母都计算了,出来26次。  但是我只想要有字母的次数,没有提到的字母不写出来。。。。怎么改进
做出来的结果如下:(此程序由yyblackyy原创)
程序代码:
#include<iostream>
#include<fstream>
#include<cctype>
#include<iomanip>
#include<cstdlib>
#define Maxpath 80     // The maximum name of the file     
using namespace std;
int fre[26];       // The times of each char                                    
const char str[]="abcdefghijklmnopqrstuvwxyz";    //  Alphabet   
static int up=0,low=0,wsp=0,total=0;
void frequency(char ch);
void count(char file_name[]);
void print();
int main()
{
  
    char filename[Maxpath];                    
    cout<<"Please enter the file_name"<<endl;
    cin.getline (filename,Maxpath);       // get a file name
    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))        // judge the write space or not
            wsp++;
        else if(isalpha(ch))        // judge the Alphabet or not
        {
            if(isupper(ch))     // judge the upper case
                up++;                     
            else                 // judge the lower case
                low++;
            ch2=tolower(ch);           // To lower case
            frequency(ch2);            
        }
        else
            ;
        total++;     
    }while(!istr.eof());     
}
//*****************************************************************
void print()
{
int Count=0;
cout<<"Letter Frequencies:"<<endl;             
for(int i=0;i<26;i++)                      
{    if(fre[i]>Count)   
    cout<<char(toupper(str[i]))<<setw(36)<<fre[i]<<endl;                                                 
cout<<"Rest of Letters"<<endl;              
cout<<"Upper Case"<<endl;       
cout<<up<<endl;
cout<<"Lower Case"<<endl;        
cout<<low<<endl;
cout<<"White Space"<<endl;     
cout<<wsp<<endl;
cout<<"Total char"<<endl;       
cout<<total<<endl;     

}
system("pause");
}
搜索更多相关主题的帖子: 改进 
2010-04-10 03:37
orleans
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-4-5
收藏
得分:0 
ding~~~
2010-04-10 09:34
yyblackyy
Rank: 6Rank: 6
等 级:侠之大者
帖 子:98
专家分:457
注 册:2010-3-31
收藏
得分:15 
int Count=0;
cout<<"提示。。。。";                    //这个功能好像我在帖子里注释过哦
cin>>Count;                         //字符出现的个数大于Count时才显示该字符的个数      
cout<<"Letter Frequencies:"<<endl;            
for(int i=0;i<26;i++)                     
{    if(fre[i]>Count)   
2010-04-10 10:20
orleans
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-4-5
收藏
得分:0 
回复 3楼 yyblackyy
还是不可以

我的意思是cout只输入一次文件名

然后直接出来output, output只要显示有字母的,不要26个字母都显示

谢谢
改如何改进?
2010-04-10 12:44
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
没仔细看你的程序。没出的不显示,你输出之前看看个数是不是 0 不就行了吗?
2010-04-11 10:34
orleans
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-4-5
收藏
得分:0 
回复 5楼 pangding
如何做出 那样的效果?
请给代码
2010-04-11 11:12
yyblackyy
Rank: 6Rank: 6
等 级:侠之大者
帖 子:98
专家分:457
注 册:2010-3-31
收藏
得分:0 
楼主真的运行了代码吗???不负责任啊
2010-04-11 13:51
orleans
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-4-5
收藏
得分:0 
回复 7楼 yyblackyy
我有学习。。。。
2010-04-12 00:58
judking
Rank: 2
等 级:论坛游民
帖 子:13
专家分:10
注 册:2010-3-30
收藏
得分:0 
ding ge~
2010-04-12 19:58
快速回复:如何改进这个问题???
数据加载中...
 
   



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

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