| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 989 人关注过本帖
标题:输入数据一回车程序就死,这个程序我调了3个小时了.
取消只看楼主 加入收藏
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
结帖率:88.89%
收藏
 问题点数:0 回复次数:7 
输入数据一回车程序就死,这个程序我调了3个小时了.

/**************************************************************
程序功能:从终端上输入一段正文,将每个出现的单词存入一数组,
要求重复出现的单词能记下该单词的出现次数。
***************************************************************
目前能通过编译,但是不能正确运行,输入数据一回车就死!
**************************************************************/
#include "iostream.h"
#include "string.h"
struct pair
{
char *name;
int val;
};
const int large=600;
static pair vec[large];
pair * find(char *p)
{
for(int i=0; vec[i].name;i++)
{
if (strcmp(p,vec[i].name)==0) return &vec[i];
if (i==large) return &vec[large-1];
return &vec[i];
}
}

int & value(char *p)
{
pair *res=find(p);
if(res->name==0)
{
res->name=new char [strlen(p)+1];
strcpy(res->name,p);
res->val=0;
}
return res->val;
}
const int max=255;
main()
{
char buf[max];
while (cin >> buf) {value(buf)++;}
for (int i=0;vec[i].name;i++)
{
cout<<vec[i].name<<":"<<vec[i].val<<"";
}
}

搜索更多相关主题的帖子: 数据 回车 输入 
2007-06-21 23:02
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 

谁来帮帮忙啊?

2007-06-21 23:06
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 

没有啊,我是新手,

2007-06-21 23:32
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 
哦,谢谢啊

2007-06-21 23:33
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 

他是初学 这个程序是他在书上抄下来的 他的数是4年前的书 而且是个盗版的书好像
我想也是的,只是我怎么想到教育局的自考办公室的书怎么会是盗版呢?可是书上的字不清晰,而且到处是错,我都不得不信了,哎!

百年不亮,谢谢你所提醒.
mp3aaa,谢谢你的程序啊.



现在我把数组初始化了,不死了,但是好象进入死循环了!再请你们帮忙看看啊.
#include "iostream.h"
#include "string.h"
struct pair
{
char *name;
int val;
};
const int large=6;
static pair vec[large]={{"",0},{"",0},{"",0},{"",0}};
pair * find(char *p)
{
for(int i=0; vec[i].name;i++)
{
if (strcmp(p,vec[i].name)==0) return &vec[i];
if (i==large) return &vec[large-1];
return &vec[i];
}
}

int & value(char *p)
{
pair *res=find(p);
if(res->name==0)
{
res->name=new char [strlen(p)+1];
strcpy(res->name,p);
res->val=0;
}
return res->val;
}
const int max=255;
main()
{
char buf[max];
while (cin >> buf) value(buf)++; //这里怎么不退出循环啊?怎么才能退出循环啊?
for (int i=0;vec[i].name;i++)
{
cout<<vec[i].name<<":"<<vec[i].val<<"";
}
}

[此贴子已经被作者于2007-6-22 8:39:47编辑过]

2007-06-22 08:29
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 
谢谢了啊,问题解决了啊,能退出了,可是没有输出vec[i].name的值啊.再帮我看看啊?
2007-06-22 11:37
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 
当large=1024时,我怎么把这个1024个组数元素初始化啊?
2007-06-22 11:47
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 
哦,谢谢.
2007-06-23 14:37
快速回复:输入数据一回车程序就死,这个程序我调了3个小时了.
数据加载中...
 
   



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

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