标题:程序出来有错,读取单词的。
只看楼主
q740940561
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2013-3-16
结帖率:85.71%
已结贴  问题点数:9 回复次数:13 
程序出来有错,读取单词的。
帮忙改下错,程序运行有误。TXT文档内容For handing you a heart worth breaking
从文件中读取单词,统计单词的个数,单词之间以空格、标点或换行符分隔。注意判断文件是否打开成功。单词为英文单词。
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int CountWords(string line) {
    line = " " + line;
    int len = line.size();
    int num = 0;
    for(int i = 1; i < line.size(); i++) {
        if(line[i] >= 'a' && line[i] <= 'z' ) {
            if(line[i-1] < 'a' || line[i-1] > 'z')
                    num++;
            }
        }
    return num;
}


int main() {
    int num = 0;
    ifstream input;
    input.open("word.txt");
    string buff;
    if(!input) {
        cout << "文件打开失败:"<<endl;
        return 0;
    }
    while(getline(input,buff)) {
        num += CountWords(buff);
    }
        cout << num << endl;
    return 0;
}
搜索更多相关主题的帖子: 单词 include 换行符 heart 
2013-04-03 19:26
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
得分:0 
没有错啊 是7个单词啊
你没有处理大写字母的情况 不过你只有首字母大写 不影响结果啊
如果出现一个全大写的单词 你这个程序就要漏掉了

人生是一场错过 愿你别蹉跎
2013-04-03 19:49
dishitian
Rank: 1
等 级:禁止发言
帖 子:9
专家分:4
注 册:2013-4-3
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2013-04-03 20:00
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2391
专家分:13384
注 册:2013-3-3
得分:0 
程序编译没有错误,可能你的逻辑错误了吧

Maybe
2013-04-03 20:00
q740940561
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2013-3-16
得分:0 
回复 2楼 fanpengpeng
我现在把程序改成了这个,加上了读出原文件的功能,还有大写的功能,但是就是无法读出单词的个数,一直显示超出范围。。。
#include <iostream>
#include <string>
#include <fstream>
using namespace std;

int CountWords(string line) {
    cout << line << endl;
    int len = line.size();
    int num = 0;
    for(int i = 0; i < len; i++) {
        if(line[i] >= 'a' && line[i] <= 'z'||line[i] >= 'A' && line[i] <= 'Z' ) {
            if(line[i+1] < 'a' || line[i+1] > 'z')
                    num++;
            }
        }
    return num;
}
int main() {
    int num;
    ifstream input;
    input.open("word.txt");
    string buff;
    if(!input) {
        cout << "文件打开失败:"<<endl;
        return 0;
    }
    while(getline(input,buff)) {
        num = CountWords(buff);
    }
        cout << num << endl;
    return 0;
}
2013-04-03 20:07
q740940561
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2013-3-16
得分:0 
程序框现在是跳出一下就直接没了,怎么让它停留啊?
2013-04-03 20:12
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
得分:0 
if(line[i] >= 'a' && line[i] <= 'z'||line[i] >= 'A' && line[i] <= 'Z' ) {
            if(line[i+1] < 'a' || line[i+1] > 'z')
                    num++;
            }

下边也要改的啊
while(getline(input,buff)) {
        num = CountWords(buff);
    }

还有 你是要统计整个文件的单词个数吗 那么num应该累加的啊 改成 num += ...

人生是一场错过 愿你别蹉跎
2013-04-03 20:12
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
得分:0 
system(pause);

人生是一场错过 愿你别蹉跎
2013-04-03 20:13
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
得分:9 
system("pause");
是这个 不好意思 没用过这玩意
或者你可以加个 getchar(); C++里 随便cin个字符

人生是一场错过 愿你别蹉跎
2013-04-03 20:16
q740940561
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2013-3-16
得分:0 
回复 9楼 fanpengpeng
不行呀,还是跳出来就关了,其他东西也不会来。。。能不能改好了代码发个给我看看呀,谢谢了。。。
2013-04-03 20:32



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




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

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