标题:这个问题,写了程序运行不对,求解。
只看楼主
xjbmcx
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-9-22
结帖率:80%
已结贴  问题点数:6 回复次数:7 
这个问题,写了程序运行不对,求解。
要求的是:写一个程序,用它计算一个文件的以下各项统计信息:文件中的字符总数、非空白字符
的总数和文件中的字母数。并将统计结果输出到屏幕和另一个文件。写完了以后运行得不到正确结果,望帮忙解决,十分感谢。

#include <fstream>
#include <iostream>
#include<cstdlib>
using namespace std;
int main()
{
    ifstream in_stream;
    ofstream out_stream;

    char ch;
    int zfzs=0,fkbzfzs=0,letter=0;

    in_stream.open("infile.txt");
    if(in_stream.fail())
    {
        cout<<"input file opening failed\n";
        exit(1);
    }
    out_stream.open("outfile.txt");
    if(out_stream.fail())
    {
        cout<<"output file opening failed\n";
        exit(1);
    }

    while(!in_stream.eof())
    {
        in_stream>>ch;
        zfzs++;
    }
    if(ch!=' ')
    {
        fkbzfzs++;
    }
    if(ch>='a' && ch<='z' || ch>='A' && ch<='Z')
    {
        letter++;
    }
   
    cout<<zfzs<<'\n'<<fkbzfzs<<'\n'<<letter<<endl;
   

    out_stream<<zfzs<<'\n'<<fkbzfzs<<'\n'<<letter<<endl;

    in_stream.close();
    out_stream.close();
    return 0;
}
搜索更多相关主题的帖子: include letter file 统计 
2013-10-20 11:03
blueskiner
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:227
专家分:707
注 册:2008-9-22
得分:2 
运行不对自己调试啊
2013-10-20 11:15
xjbmcx
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-9-22
得分:0 
回复 2楼 blueskiner
就是调试不出来才上来问的
2013-10-21 11:55
blueskiner
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:227
专家分:707
注 册:2008-9-22
得分:0 
没有一个前提:是否ascii字符编码?还是宽字符型?
2013-10-21 12:51
在这里爬起
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:43
专家分:113
注 册:2013-8-9
得分:2 
程序代码:
  while(!in_stream.eof())
    {
        in_stream>>ch;
        zfzs++;
       if(ch!=' ')
    {
        fkbzfzs++;
    }
    if(ch>='a' && ch<='z' || ch>='A' && ch<='Z')
    {
        letter++;
    }
 }
你的问题是while的括号,要包括你判断的几个语句,否则就没有执行了。
2013-10-22 16:57
jansonying
Rank: 2
等 级:论坛游民
帖 子:11
专家分:17
注 册:2011-5-7
得分:2 
回复 5楼 在这里爬起
我执行以后 zfzs fkbzfzs 这两项始终相等  fkbzfzs没把空格踢出去
2013-10-25 10:18
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:2 
根本就不像个C++代码,另外,对于“非空白字符”中的“空白”,你明白其和“空格”的区别吗?
ISO C标准如是说
The standard white-space characters are the following: space(' '), form feed ('\f'), new-line('\n'), carriage return('\r'), horizontal tab('\t'), and vertical tab('\v').

程序代码:
#include <fstream>
#include <iostream>
using namespace std;

int main()
{
    ifstream in_stream( "infile.txt" );
    if( !in_stream )
    {
        cerr << "input file opening failed\n";
        return 1;
    }

    ofstream out_stream( "outfile.txt" );
    if( !out_stream )
    {
        cerr << "output file opening failed\n";
        return 2;
    }

    unsigned a = 0; // 字符总数
    unsigned b = 0; // 非空白字符的总数
    unsigned c = 0; // 文件中的字母数
    for( char ch; in_stream.get(ch); )
    {
        ++a;
        if( !isspace(ch) )
            ++b;
        if( isalpha(ch) )
            ++c;
    }

    cout << a << ' '<< b << ' ' << c << endl;
    out_stream << a << ' '<< b << ' ' << c << endl;

    return 0;
}

2013-10-25 12:26
jansonying
Rank: 2
等 级:论坛游民
帖 子:11
专家分:17
注 册:2011-5-7
得分:0 
for语句还能这么用,
2013-10-26 12:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-422195-1-1.html




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

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