| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 483 人关注过本帖
标题:这是怎么回事儿?
取消只看楼主 加入收藏
ddsxd
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-3-22
收藏
 问题点数:0 回复次数:0 
这是怎么回事儿?
编程实现一个可以把文本文件中的数字(文件中每行只有一个数字,行数未知)按照从大到小顺序输出,并求其平均数的类,调试连接都没问题,运行结果也正确, 但是程序结束时系统跳出一个对话框,内容是:"0x00404595"指令引用的"0x00000000"内存。该内存不能为"read"。关掉此对话框之后,又跳出一个内容是"0x00404595"指令引用的"0xdddddddc"内存。该内存不能为"read"。哪里出的问题?请解释一下,谢谢

源代码如下:

//ave.h----------------------------
//---------------------------------
#ifndef HEADER_AVE
#define HEADER_AVE
#include<fstream>
using namespace std;
class Ave //定义这个类
{
protected:
double* d; //数组,用于储存文件中的数据
int s; //整形变量,数组的长度
public:
Ave(ifstream a); //构造函数
void input(ifstream a); //输入数据
void displaybyorder(); //排序并输出
double getave(); //求平均值
~Ave(); //析构
};
#endif


//ave.cpp----------------------- //类中的成员函数的定义
//------------------------------
#include "ave.h"
#include <iostream>
#include <fstream>
using namespace std;
Ave::Ave(ifstream a)
{
s=0;
double t;
for(;a>>t;s++); //用s记录文件中数据的个数
d=new double[s]; //新建一个长度为s的数组
}

void Ave::input(ifstream a)
{
for(int i=0;a>>d[i];i++);
}
void Ave::displaybyorder()
{
int i,j;
for(i=0;i<s;i++) //冒泡法排序
{
double max=d[i],t;
for(j=i+1;j<s;j++)
{
if(d[j]>max)
{
t=d[j];
d[j]=max;
max=t;
}
}
d[i]=max;
}
for(i=0;i<s;i++) //输出
cout<<d[i]<<' ';
cout<<endl;
}
double Ave::getave()
{
double sum=0;
for(int i=0;i<s;i++)
sum+=d[i];
return sum/s; //返回平均值
}
Ave::~Ave()
{
delete[] d; //释放内存
}

//main.cpp------------------------------
----------------------------------------
#include "ave.h"
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
void main()
{
ifstream fin("aplusb.txt");
ifstream b("aplusb.txt");
Ave a(fin);
a.input(b);
a.displaybyorder();
double d=a.getave();
cout<<d<<endl;
}

[此贴子已经被作者于2007-4-8 11:20:13编辑过]

搜索更多相关主题的帖子: 内存 编程 文本文件 源代码 对话框 
2007-04-08 11:17
快速回复:这是怎么回事儿?
数据加载中...
 
   



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

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